private void SetupData() { //cart printer sorts products by category. so we need predefined to prevent flaky tests var categoryID1 = Guid.Parse("BA38E701-024B-4968-ABED-510742481F0D"); var category1 = new Category(categoryID1, Guid.NewGuid(), "Category 1"); var categoryID2 = Guid.Parse("FD843460-7343-4C32-A2A8-493678AABA63"); var category2 = new Category(categoryID2, Guid.NewGuid(), "Category 2"); cart = new Cart(Guid.NewGuid()); cart.AddItem(new Product(Guid.NewGuid(), "Title A", 100m, categoryID1), 3); cart.AddItem(new Product(Guid.NewGuid(), "Title B", 40m, categoryID2), 2); var campaign = new Campaign(Guid.NewGuid(), categoryID1, 1, DiscountType.Amount, 10m); cart.ApplyCampaign(campaign); var coupon = new Coupon(Guid.NewGuid(), 20m, DiscountType.Amount, 20m); cart.ApplyCoupon(coupon); var deliveryCostCalculator = new DeliveryCostCalculator(10m, 5m); var deliveryCost = deliveryCostCalculator.CalculateFor(cart); cart.SetDeliveryCost(deliveryCost); categoryReader.Setup(r => r.GetByIDs(new List <Guid> { categoryID1, categoryID2 })) .Returns(new List <Category> { category1, category2 }); printer = new CartPrinter(categoryReader.Object); }
public CartController( ICartReader cartReader, CartPrinter cartPrinter, IMediator mediator) { this.cartReader = cartReader; this.cartPrinter = cartPrinter; this.mediator = mediator; }