def test_total(self): item = OrderItem( Product(name='Product 1', price=10.0, product_type=ProductType.DIGITAL), 2) self.assertEqual(item.total(), 20)
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()
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)
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)
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)
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)
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)
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()
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()
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()
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()