public void should_apply_a_ten_percent_discount_on_the_reduced_tax_items_of_a_take_away_bill() { var dish = new ADish().Build(); var order = new AnOrder() .TakeAway() .With(1, dish) .Build(); var menu = new Mock <IRepository <Dish> >(); menu.Setup(m => m.Get(dish.Id)).Returns(new Billing.ADish(dish.Id).Priced(10m).WithReducedTax().Build()); var taxConfiguration = new ATaxConfiguration().Build(); var cashRegister = new ACashRegister(menu.Object, taxConfiguration).Build(); var bill = cashRegister.Calculate(order); var discount = bill.Discounts.First(); Check.That(discount.Key.Rate).Equals(0.10m); Check.That(discount.Value).Equals(1m); Check.That(bill.Total).Equals(9m); var tenPercentTaxAmount = bill.Taxes[taxConfiguration.Get("RED").TaxConfiguration[0]]; Check.That(tenPercentTaxAmount).Equals(0.82m); }
public void addOrder(AnOrder _order) { //try //{ AnOrder dbEntry = db.AnOrders.Add(_order); if (dbEntry != null) { dbEntry.customer_name = _order.customer_name; dbEntry.description = _order.description; dbEntry.state_id = _order.state_id; dbEntry.created_at = _order.created_at; } //Если нет - создаем запись else { db.AnOrders.Add(_order); } db.SaveChanges(); //} //catch (Exception ex) //{ // Console.WriteLine(ex.Message); //} }
public AnOrder SaveOrder(AnOrder _order) { AnOrder result = null; try { AnOrder dbEntry = db.AnOrders.Find(_order.id); //Если запись о проекте существует - обновляем ее данные if (dbEntry != null) { dbEntry.customer_name = _order.customer_name; dbEntry.description = _order.description; } //Если нет - создаем запись else { db.AnOrders.Add(_order); } db.SaveChanges(); result = db.AnOrders.Find(_order.id); } catch (Exception ex) { } return(result); }
public void should_be_identifiable_by_id() { var id = 1; var order = new AnOrder(id).Build(); Check.That(order.Id).Equals(id); }
public void should_group_amounts_by_tax_in_the_bill() { var beer = "Beer"; var wine = "Wine"; var starter = "Starter"; var dessert = "Dessert"; var order = new AnOrder() .With(1, new ADish(beer).Build()) .With(1, new ADish(wine).Build()) .With(1, new ADish(starter).Build()) .With(1, new ADish(dessert).Build()) .Build(); var menu = new Mock <IRepository <Dish> >(); menu.Setup(m => m.Get(beer)).Returns(new Billing.ADish(beer).Priced(6m).OfType("Alcool").Build()); // Tax (20%) of 1 € menu.Setup(m => m.Get(wine)).Returns(new Billing.ADish(wine).Priced(12m).OfType("Alcool").Build()); // Tax (20%) of 2 € menu.Setup(m => m.Get(starter)).Returns(new Billing.ADish(starter).Priced(11m).OfType("Starter").Build()); // Tax (10%) of 1 € menu.Setup(m => m.Get(dessert)).Returns(new Billing.ADish(dessert).Priced(11m).OfType("Dessert").Build()); // Tax (10%) of 1 € var taxConfiguration = new ATaxConfiguration().Build(); var cashRegister = new ACashRegister(menu.Object, taxConfiguration).Build(); var bill = cashRegister.Calculate(order); var tenPercentTaxAmount = bill.Taxes[taxConfiguration.Get("RED").TaxConfiguration[0]]; Check.That(tenPercentTaxAmount).Equals(2m); var twentyPercentTaxAmount = bill.Taxes[taxConfiguration.Get("REG").TaxConfiguration[0]]; Check.That(twentyPercentTaxAmount).Equals(3m); }
public void Http200WhenOrderIsFound() { var orderId = 1; var tcs = "tcs"; var fiveEuros = 5m; var two = 2; var tacos = "tacos"; var orderWithTwoTacos = new AnOrder(orderId).With(two, new ADish(tcs).Named(tacos).Build()).Build(); orderBook.Setup(o => o.Get(orderId)).Returns(orderWithTwoTacos); var billForOrderWithTwoTacos = new ABill(orderId).With(fiveEuros * two).Build(); cashRegister.Setup(cr => cr.Calculate(It.IsAny <Order>())).Returns(billForOrderWithTwoTacos); var orderBookController = CreateOrderBookController(orderBook.Object, null, room.Object, cashRegister.Object, calendar.Object); var result = orderBookController.Get(orderId).Result; Check.That(result).IsInstanceOf <OkObjectResult>(); var okResult = (OkObjectResult)result; Check.That(okResult.Value).IsInstanceOf <global::MaiDan.Api.DataContracts.Responses.DetailedOrder>(); var retrievedOrder = (global::MaiDan.Api.DataContracts.Responses.DetailedOrder)okResult.Value; Check.That(retrievedOrder.Id).Equals(orderWithTwoTacos.Id); Check.That(retrievedOrder.Lines.First().Quantity).Equals(two); Check.That(retrievedOrder.Lines.First().DishName).Equals(tacos); Check.That(retrievedOrder.Lines.First().Amount).Equals(2 * fiveEuros); }
public void should_not_be_equal_when_lines_are_not_the_same() { var order1 = new AnOrder(1).With(1, new Dish("RW", "Red wine")).Build(); var order2 = new AnOrder(1).With(2, new Dish("WW", "White wine")).Build(); var isEqual = order1.Equals(order2); Check.That(isEqual).IsFalse(); }
public void should_not_be_equal_when_id_is_not_the_same() { var order1 = new AnOrder(1).Build(); var order2 = new AnOrder(2).Build(); var isEqual = order1.Equals(order2); Check.That(isEqual).IsFalse(); }
public void can_add_directly_quantity_and_dish_to_an_order() { var order = new AnOrder().Build(); var line = new Line(0, 2, false, new Dish("B", "Burgers")); order = order.Add(2, false, new Dish("B", "Burgers")); Check.That(order.Lines).Contains(line); }
public void can_add_line_to_an_order() { var order = new AnOrder().Build(); var line = new Line(1, 2, false, new Dish("B", "Burgers")); order = order.Add(line); Check.That(order.Lines).Contains(line); }
public void should_print_a_bill_from_an_order() { var cashRegister = new ACashRegister().Build(); var order = new AnOrder().Build(); var bill = cashRegister.Calculate(order); Check.That(bill.Id).Equals(order.Id); }
public void should_not_print_a_lineless_order() { var order = new AnOrder() .Build(); var cashRegister = new ACashRegister().Build(); Check.ThatCode(() => cashRegister.Print(order)).Throws <InvalidOperationException>(); }
public void should_be_equal_when_id_and_lines_are_the_same() { var glassOfWine = new Dish("RW", "Red wine"); var order1 = new AnOrder(1).With(1, glassOfWine).Build(); var order2 = new AnOrder(1).With(1, glassOfWine).Build(); var isEqual = order1.Equals(order2); Check.That(isEqual).IsTrue(); }
private void AddItem() { if (OrderItem.GoodsName != "" && OrderItem.Quantity >= 1 && OrderItem.Price > 0) { AnOrder.AddItem(OrderItem); label6.Text = OrderItem.ToString(); } return; }
public void should_not_be_equal_when_table_is_not_the_same() { var id = 1; int numberOfGuests = 2; var order1 = new AnOrder(id).OnSite("T1", numberOfGuests).Build(); var order2 = new AnOrder(id).OnSite("T2", numberOfGuests).Build(); var isEqual = order1.Equals(order2); Check.That(isEqual).IsFalse(); }
public void should_not_be_equal_when_number_of_guests_are_not_the_same() { var id = 1; Table table = new Table("T1"); var order1 = new AnOrder(id).OnSite(table, 1).Build(); var order2 = new AnOrder(id).OnSite(table, 2).Build(); var isEqual = order1.Equals(order2); Check.That(isEqual).IsFalse(); }
private void AddItem() { if (OrderItem.GoodsName != "" && OrderItem.Quantity.GetType() == typeof(int) && OrderItem.Quantity >= 1 && OrderItem.Price > 0) { AnOrder.AddItem(OrderItem); } label6.Text = OrderItem.ToString(); return; }
public void Http500WhenPriceIsNotConfiguredForDetailedOrder() { orderBook.Setup(o => o.Get(It.IsAny <string>())).Returns((global::MaiDan.Ordering.Domain.Order)null); var dishId = "mistery"; var dish = new Billing.ADish(dishId).Build(); var order = new AnOrder().With(2, new ADish(dishId).Build()).Build(); orderBook.Setup(o => o.Get(It.IsAny <object>())).Returns(order); cashRegister.Setup(cr => cr.Calculate(It.IsAny <Order>())).Throws(new InvalidOperationException()); var orderBookController = CreateOrderBookController(orderBook.Object, null, room.Object, cashRegister.Object, null); Check.ThatCode(() => orderBookController.Get(1)).Throws <InvalidOperationException>(); }
public void should_be_equal_when_orders_are_the_same() { var id = 1; Table table = new Table("T1"); int numberOfGuests = 2; var order1 = new AnOrder(id).OnSite(table, numberOfGuests).Build(); var order2 = new AnOrder(id).OnSite(table, numberOfGuests).Build(); var isEqual = order1.Equals(order2); Check.That(isEqual).IsTrue(); }
public void DelOrder(int _orderId) { try { AnOrder anOrder = db.AnOrders.Find(_orderId); db.AnOrders.Remove(anOrder); db.SaveChanges(); } catch (Exception ex) { } }
public void can_update_lines() { var initialLine = new Line(1, 1, false, new Dish("T", "Taco")); var order = new AnOrder().With(initialLine).Build(); var updatedLine = new Line(1, 1, false, new Dish("B", "Burrito")); order.Update(new List <Line> { updatedLine }); Check.That(order.Lines).Contains(updatedLine); Check.That(order.Lines).Not.Contains(initialLine); }
public void AddOrder(AnOrder _order) { AnOrder dbEntry = db.AnOrders.Add(_order); if (dbEntry != null) { dbEntry.customer_name = _order.customer_name; dbEntry.description = _order.description; dbEntry.state_id = _order.state_id; dbEntry.created_at = _order.created_at; } //Если нет - создаем запись else { db.AnOrders.Add(_order); } db.SaveChanges(); }
public void should_calculate_bill_total() { var order = new AnOrder() .With(1, new ADish("1").Build()) .With(2, new ADish("2").Build()) .Build(); var menu = new Mock <IRepository <Dish> >(); menu.Setup(m => m.Get("1")).Returns(new Billing.ADish("1").Priced(5m).Build()); menu.Setup(m => m.Get("2")).Returns(new Billing.ADish("2").Priced(10m).Build()); var cashRegister = new ACashRegister(menu.Object).Build(); var bill = cashRegister.Calculate(order); Check.That(bill.Total).Equals(25m); }
public void should_not_alter_lines_amount_when_a_take_away_discount_is_applied() { var dish = new ADish().Build(); var order = new AnOrder() .TakeAway() .With(1, dish) .Build(); var menu = new Mock <IRepository <Dish> >(); menu.Setup(m => m.Get(dish.Id)).Returns(new Billing.ADish(dish.Id).Priced(10m).WithReducedTax().Build()); var cashRegister = new ACashRegister(menu.Object).Build(); var bill = cashRegister.Calculate(order); Check.That(bill.Lines.First().Amount).Equals(10m); }
public void should_calculate_lines_amount_using_the_menu() { var order = new AnOrder() .With(1, new ADish("1").Build()) .With(2, new ADish("2").Build()) .Build(); var menu = new Mock <IRepository <Dish> >(); menu.Setup(m => m.Get("1")).Returns(new Billing.ADish("1").Priced(5m).Build()); menu.Setup(m => m.Get("2")).Returns(new Billing.ADish("2").Priced(10m).Build()); var cashRegister = new ACashRegister(menu.Object).Build(); var bill = cashRegister.Calculate(order); Check.That(bill.Lines.ElementAt(0).Amount).Equals(5m); Check.That(bill.Lines.ElementAt(1).Amount).Equals(20m); }
public void should_determine_tax_as_regular_when_dish_is_of_type_alcohol() { var order = new AnOrder() .With(1, new ADish("1").Build()) .Build(); var taxRateAt20Percent = 0.20m; var menu = new Mock <IRepository <Dish> >(); var fiveEuros = 5m; menu.Setup(m => m.Get("1")).Returns(new Billing.ADish("1").Priced(fiveEuros).OfType("Alcool").Build()); var cashRegister = new ACashRegister(menu.Object).Build(); var bill = cashRegister.Calculate(order); //S'assurer que la taxe est bien celle normale (par l'id?), pas au montant seulement Check.That(bill.Lines.ElementAt(0).TaxRate.Rate).Equals(taxRateAt20Percent); }
public void should_not_apply_the_ten_percent_discount_on_regular_tax_products_in_take_away_bills() { var dish = new ADish().Build(); var order = new AnOrder() .TakeAway() .With(1, dish) .Build(); var menu = new Mock <IRepository <Dish> >(); menu.Setup(m => m.Get(dish.Id)).Returns(new Billing.ADish(dish.Id).Priced(10m).WithRegularTax().Build()); var cashRegister = new ACashRegister(menu.Object).Build(); var bill = cashRegister.Calculate(order); Check.That(bill.Discounts).IsEmpty(); Check.That(bill.Total).Equals(10m); }
public void should_not_apply_discount_for_on_site_bills() { var dish = new ADish().Build(); var order = new AnOrder() .OnSite("1", 2) .With(1, dish) .Build(); var menu = new Mock <IRepository <Dish> >(); menu.Setup(m => m.Get(dish.Id)).Returns(new Billing.ADish(dish.Id).Priced(10m).Build()); var taxConfiguration = new ATaxConfiguration().Build(); var cashRegister = new ACashRegister(menu.Object, taxConfiguration).Build(); var bill = cashRegister.Calculate(order); Check.That(bill.Total).Equals(10m); var tenPercentTaxAmount = bill.Taxes[taxConfiguration.Get("RED").TaxConfiguration[0]]; Check.That(tenPercentTaxAmount).Equals(0.91m); }
public void should_not_charge_for_an_order_with_only_free_dishes() { var dish1 = new ADish("1").Build(); var dish2 = new ADish("2").Build(); var order = new AnOrder() .TakeAway() .With(1, true, dish1) .With(1, true, dish2) .Build(); var menu = new Mock <IRepository <Dish> >(); menu.Setup(m => m.Get(dish1.Id)).Returns(new Billing.ADish(dish1.Id).Priced(15m).WithRegularTax().Build()); menu.Setup(m => m.Get(dish2.Id)).Returns(new Billing.ADish(dish2.Id).Priced(8m).WithRegularTax().Build()); var cashRegister = new ACashRegister(menu.Object).Build(); var bill = cashRegister.Calculate(order); Check.That(bill.Discounts).IsEmpty(); Check.That(bill.Total).Equals(0m); }
public void should_calculate_bill_tax_from_the_sum_of_lines_amount() { var cocktail = new ADish("Cocktail").Build(); var order = new AnOrder() .With(1, cocktail) .With(1, cocktail) .With(1, cocktail) .Build(); var menu = new Mock <IRepository <Dish> >(); menu.Setup(m => m.Get(cocktail.Id)).Returns(new Billing.ADish(cocktail.Id).Priced(5m).OfType("Alcool").Build()); // Tax (20%) of 0,83 € var taxConfiguration = new ATaxConfiguration().Build(); var cashRegister = new ACashRegister(menu.Object, taxConfiguration).Build(); var bill = cashRegister.Calculate(order); var tax_amount = bill.Taxes[taxConfiguration.Get("REG").TaxConfiguration[0]]; Check.That(tax_amount).Equals(2.5m); // instead of 2,49 € }