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);
        }
示例#4
0
        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);
                }
            }
        }