public virtual void runShouldNotGenerateAgentCommissionIfItemsInvalid()
        {
            LineItem[] lineItems = new LineItem[] { new LineItem("item", "item", new ProductCategory[] { ProductCategory.Membership, ProductCategory.Virtual }) };
            var        customer  = new Mock <Customer>().Object;
            Agent      agent     = new Mock <Agent>().Object;
            Order      order     = new Order(customer, lineItems, agent);
            Payment    payment   = new Payment(order);

            PaymentHandler sut = new AgentCommissionHandler();

            sut.run(payment);

            agent.generateCommission(order);
        }
        public virtual void runShouldGenerateAgentCommissionIfPhysicalItemInOrder()
        {
            LineItem[] lineItems = new LineItem[]
            {
                new LineItem("item", "item", new ProductCategory[] { ProductCategory.Physical }),
                new LineItem("membership", "membership", new ProductCategory[] { ProductCategory.Membership })
            };
            var     customer = new Mock <Customer>().Object;
            Agent   agent    = new Mock <Agent>().Object;
            Order   order    = new Order(customer, lineItems, agent);
            Payment payment  = new Payment(order);

            PaymentHandler sut = new AgentCommissionHandler();

            sut.run(payment);

            //verify(agent, times(1)).generateCommission(any());
            agent.generateCommission(order);
        }
        public virtual void runShouldGenerateAgentCommissionOnceIfMultipleBooksInOrder()
        {
            LineItem[] lineItems = new LineItem[]
            {
                new LineItem("book1", "book1", new ProductCategory[] { ProductCategory.Books }),
                new LineItem("book2", "book2", new ProductCategory[] { ProductCategory.Books }),
                new LineItem("book3", "book3", new ProductCategory[] { ProductCategory.Books })
            };
            var     customer = new Mock <Customer>().Object;
            Agent   agent    = new Mock <Agent>().Object;
            Order   order    = new Order(customer, lineItems, agent);
            Payment payment  = new Payment(order);

            PaymentHandler sut = new AgentCommissionHandler();

            sut.run(payment);

            //verify(agent, times(1)).generateCommission(any());
            agent.generateCommission(order);
        }