public virtual void runShouldNotifyCustomer() { Membership membershipSilver = new Membership("membership-silver", null); Membership membershipGold = new Membership("membership-gold", membershipSilver); LineItem[] lineItems = new LineItem[] { new LineItem(membershipGold.Sku, "gold", new ProductCategory[] { ProductCategory.Membership }) }; //Customer customer = spy(typeof(Customer)); var customer = new Mock <Customer>().Object; //when(customer.hasMembership(membershipSilver)).thenReturn(true); Order order = new Order(customer, lineItems, null); Payment payment = new Payment(order); MembershipRepository repo = new Mock <MembershipRepository>().Object; //when(repo.findBySku(membershipGold.Sku)).thenReturn(membershipGold); NotificationService notificationService = new Mock <NotificationService>().Object; PaymentHandler sut = new MembershipUpgradeHandler(repo, notificationService); sut.run(payment); notificationService.notify(customer, membershipGold); //verify(notificationService, times(1)).notify(customer, membershipGold); }
public virtual void runShouldDoNothingIfNoMembershipsInOrder() { LineItem[] lineItems = new LineItem[] { new LineItem("item1", "item1", new ProductCategory[] { ProductCategory.Physical }) }; var customer = new Mock <Customer>().Object; Order order = new Order(customer, lineItems, null); Payment payment = new Payment(order); MembershipRepository service = new Mock <MembershipRepository>().Object; NotificationService notificationService = new Mock <NotificationService>().Object; Membership membership = new Membership("item1", null); PaymentHandler sut = new MembershipActivateHandler(service, notificationService); sut.run(payment); customer.addMembership(membership, notificationService); }
public virtual void runShouldNotifyCustomer() { LineItem[] lineItems = new LineItem[] { new LineItem("item1", "item1", new ProductCategory[] { ProductCategory.Membership }) }; var customer = new Mock <Customer>().Object; Order order = new Order(customer, lineItems, null); Payment payment = new Payment(order); MembershipRepository repo = new Mock <MembershipRepository>().Object; Membership membership = new Membership("item1", null); //when(repo.findBySku("item1")).thenReturn(membership); NotificationService notificationService = new Mock <NotificationService>().Object; PaymentHandler sut = new MembershipActivateHandler(repo, notificationService); sut.run(payment); notificationService.notify(customer, membership); //verify(notificationService, times(1)).notify(customer, membership); }
public virtual void run(Payment payment) { Order order = payment.Order; LineItem[] lineItems = order.LineItems; Customer customer = order.Customer; foreach (LineItem lineItem in lineItems) { if (!lineItem.hasCategory(ProductCategory.Membership)) { continue; } Membership membership = _service.findBySku(lineItem.Sku); if (membership != null) { customer.addMembership(membership, _notificationService); } } }
public virtual void run(Payment payment) { Order order = payment.Order; Customer customer = order.Customer; LineItem[] lineItems = order.LineItems; foreach (LineItem lineItem in lineItems) { if (!lineItem.hasCategory(ProductCategory.Membership)) { continue; } Membership membership = _repo.findBySku(lineItem.Sku); Membership previousLevel = membership.PreviousLevel; if (customer.hasMembership(previousLevel)) { customer.addMembership(membership, _notificationService); } } }