public void ReceiptOneElite() { IDiscountHandler discount = GetDefaultDiscountHandler(); var order = new Order("Anywhere Bike Shop", discount); order.AddLine(new Line(Elite, 1)); Assert.AreEqual(ResultStatementOneElite, order.Receipt()); }
public void HtmlReceiptOneDuraAce() { IDiscountHandler discount = GetDefaultDiscountHandler(); var order = new Order("Anywhere Bike Shop", discount); order.AddLine(new Line(DuraAce, 1)); Assert.AreEqual(HtmlResultStatementOneDuraAce, order.Receipt(new HtmlFormatter())); }
public Order(string company, IDiscountHandler discountHandler) { Company = company; _discountHandler = discountHandler; }
public async Task CalculateBenefits_GivenInput_ReturnsExpectedCosts() { //Arrange string name1 = "Name1"; string name2 = "Name2"; decimal discount = 0.5M; int payPeriods = 10; decimal employeeYearCost = 400M; decimal dependentYearCost = 200M; decimal employeeDiscountYearCost = (1 - discount) * employeeYearCost; decimal dependentDiscountYearCost = (1 - discount) * dependentYearCost; List <BeneficiaryRequestModel> testRequest = new List <BeneficiaryRequestModel> { new BeneficiaryRequestModel { Name = name1, Type = BenefitsData.Employee }, new BeneficiaryRequestModel { Name = name2, Type = BenefitsData.Dependent } }; BenefitCalculator calculator = new BenefitCalculator(); IDiscountHandler fakeDiscountHandler = A.Fake <IDiscountHandler>(); IDataAccessor fakeDataAccess = A.Fake <IDataAccessor>(); calculator.DiscountHandler = fakeDiscountHandler; calculator.DataAccess = fakeDataAccess; A.CallTo(() => fakeDiscountHandler.EligibleForDiscount(A <string> .Ignored)).Returns(true); A.CallTo(() => fakeDataAccess.GetBenefitCostsAsync(BenefitsData.Employee)).Returns(Task.FromResult(employeeYearCost)); A.CallTo(() => fakeDataAccess.GetBenefitCostsAsync(BenefitsData.Dependent)).Returns(Task.FromResult(dependentYearCost)); A.CallTo(() => fakeDataAccess.GetDiscountAsync()).Returns(Task.FromResult(discount)); A.CallTo(() => fakeDataAccess.GetPayPeriodsAsync()).Returns(Task.FromResult(payPeriods)); //Act var response = await calculator.CalculateBenefits(testRequest); //Assert A.CallTo(() => fakeDiscountHandler.EligibleForDiscount(name1)).MustHaveHappenedOnceExactly(); A.CallTo(() => fakeDiscountHandler.EligibleForDiscount(name2)).MustHaveHappenedOnceExactly(); A.CallTo(() => fakeDataAccess.GetDiscountAsync()).MustHaveHappenedOnceExactly(); A.CallTo(() => fakeDataAccess.GetPayPeriodsAsync()).MustHaveHappenedOnceExactly(); A.CallTo(() => fakeDataAccess.GetBenefitCostsAsync(BenefitsData.Employee)).MustHaveHappenedOnceExactly(); A.CallTo(() => fakeDataAccess.GetBenefitCostsAsync(BenefitsData.Dependent)).MustHaveHappenedOnceExactly(); BeneficiaryResponseModel expected1 = new BeneficiaryResponseModel { Name = name1, Type = BenefitsData.Employee, YearCost = employeeDiscountYearCost, PeriodCost = decimal.Round((employeeDiscountYearCost / payPeriods), 2) }; BeneficiaryResponseModel expected2 = new BeneficiaryResponseModel { Name = name2, Type = BenefitsData.Dependent, YearCost = dependentDiscountYearCost, PeriodCost = decimal.Round((dependentDiscountYearCost / payPeriods), 2) }; Assert.AreEqual(2, response.Count, "Expected the response to contain the same number of entries as input"); var bene1 = response.Where(b => { return(b.Name.Equals(expected1.Name) && b.Type.Equals(expected1.Type) && b.YearCost == expected1.YearCost && b.PeriodCost == expected1.PeriodCost); }); var bene2 = response.Where(b => { return(b.Name.Equals(expected2.Name) && b.Type.Equals(expected2.Type) && b.YearCost == expected2.YearCost && b.PeriodCost == expected2.PeriodCost); }); Assert.AreEqual(1, bene1.Count(), "Expected the response to contain expected1 model"); Assert.AreEqual(1, bene2.Count(), "Expected the response to contain expected2 model"); }
public HandlersStart(decimal maxDiscount) { _shipmentHandler = new ShipmentHandler(); _rulesHandler = new RulesHandler(); _discountHandler = new DiscountHandler(maxDiscount); }
public HandlersStart() { _shipmentHandler = new ShipmentHandler(); _rulesHandler = new RulesHandler(); _discountHandler = new DiscountHandler(); }
public Discounts(List <CartItem> cartItems) { cartItems.ForEach(item => this.cartPrice += (item.ItemPrice * item.ItemCount)); this.discountHandler = new DiscountHandler(); }
public IDiscountHandler SetNext(IDiscountHandler handler) { _nextHandler = handler; return(handler); }