def test_total(self):
        item = OrderItem(
            Product(name='Product 1',
                    price=10.0,
                    product_type=ProductType.DIGITAL), 2)

        self.assertEqual(item.total(), 20)
Exemple #2
0
    def test_process_multiple(self):
        email = EmailCommand()
        email.process = MagicMock()

        discount = DiscountCommand()
        discount.process = MagicMock()

        ship_label = ShipLabelCommand()
        ship_label.process = MagicMock()

        subscription = SubscriptionCommand()
        subscription.process = MagicMock()

        order_item = OrderItem(product=Product(name='Book',
                                               price=10,
                                               product_type=ProductType.BOOK),
                               quantity=1)

        OrderItemProcessor(order_item) \
            .add(email) \
            .add(ship_label) \
            .add(discount) \
            .add(subscription) \
            .process()

        email.process.assert_called_with()
        ship_label.process.assert_called_with()
        discount.process.assert_called_with()
        subscription.process.assert_called_with()
Exemple #3
0
    def test_create_invalid_product_type(self):
        order_item = OrderItem(Product(name=None,
                                       price=None,
                                       product_type=None),
                               quantity=1)

        with self.assertRaises(Exception):
            ProductTypeStrategyFactory.create(order_item)
Exemple #4
0
    def test_create_digital(self):
        order_item = OrderItem(Product(name='Digital',
                                       price=1,
                                       product_type=ProductType.DIGITAL),
                               quantity=1)

        strategy = ProductTypeStrategyFactory.create(order_item)

        self.assertIsInstance(strategy, ProductDigitalStrategy)
Exemple #5
0
    def test_create_membership(self):
        order_item = OrderItem(Product(name='Membership',
                                       price=1,
                                       product_type=ProductType.MEMBERSHIP),
                               quantity=1)

        strategy = ProductTypeStrategyFactory.create(order_item)

        self.assertIsInstance(strategy, ProductMembershipStrategy)
Exemple #6
0
    def test_create_physical(self):
        order_item = OrderItem(Product(name='Physical',
                                       price=1,
                                       product_type=ProductType.PHYSICAL),
                               quantity=1)

        strategy = ProductTypeStrategyFactory.create(order_item)

        self.assertIsInstance(strategy, ProductPhysicalStrategy)
Exemple #7
0
    def test_create_book(self):
        order_item = OrderItem(Product(name='Book',
                                       price=1,
                                       product_type=ProductType.BOOK),
                               quantity=1)

        strategy = ProductTypeStrategyFactory.create(order_item)

        self.assertIsInstance(strategy, ProductBookStrategy)
Exemple #8
0
    def test_process_subscription(self):
        subscription = SubscriptionCommand()
        subscription.process = MagicMock()

        order_item = OrderItem(product=Product(name='Book',
                                               price=10,
                                               product_type=ProductType.BOOK),
                               quantity=1)

        OrderItemProcessor(order_item).add(subscription).process()

        subscription.process.assert_called_with()
Exemple #9
0
    def test_process_discount(self):
        discount = DiscountCommand()
        discount.process = MagicMock()

        order_item = OrderItem(product=Product(name='Book',
                                               price=10,
                                               product_type=ProductType.BOOK),
                               quantity=1)

        OrderItemProcessor(order_item).add(discount).process()

        discount.process.assert_called_with()
Exemple #10
0
    def test_process_email(self):
        email = EmailCommand()
        email.process = MagicMock()

        order_item = OrderItem(product=Product(name='Book',
                                               price=10,
                                               product_type=ProductType.BOOK),
                               quantity=1)

        OrderItemProcessor(order_item).add(email).process()

        email.process.assert_called_with()
Exemple #11
0
    def test_process_ship_label(self):
        ship_label = ShipLabelCommand()
        ship_label.process = MagicMock()

        order_item = OrderItem(product=Product(name='Book',
                                               price=10,
                                               product_type=ProductType.BOOK),
                               quantity=1)

        OrderItemProcessor(order_item).add(ship_label).process()

        ship_label.process.assert_called_with()