class PricingServiceTestCase(TestCase): def setUp(self): self.repo = Mock() self.repo.find = Mock() self.repo.find = Mock(side_effect=lambda category, tier: discounts.get((category, tier))) discounts = { ("MANF-A", "GRADE-A"): Discount(0.3, "MANF-A", "GRADE-A") } self.service = PricingService(self.repo) def test_customer_discount(self): product = ProductFactory.build(price_category="MANF-A") customer = CustomerFactory.build(discount_tier="GRADE-A") discount = self.service.get_customer_discount(product, customer) self.assertEquals(0.3, discount, "Wrong discount calculated") self.repo.find.assert_called_with("MANF-A", "GRADE-A") def test_discount_nonexistent(self): with self.assertRaises(PricingError): self.service.get_customer_discount(ProductFactory.build(price_category="MANF-A"), CustomerFactory.build(discount_tier="FAKE")) with self.assertRaises(PricingError): self.service.get_customer_discount(ProductFactory.build(price_category="FAKE"), CustomerFactory.build(discount_tier="GRADE-A"))
def setUp(self): self.repo = Mock() self.repo.find = Mock() self.repo.find = Mock(side_effect=lambda category, tier: discounts.get((category, tier))) discounts = { ("MANF-A", "GRADE-A"): Discount(0.3, "MANF-A", "GRADE-A") } self.service = PricingService(self.repo)
def setUp(self): self.discount_repository = Mock() self.discount_repository.find = Mock() discounts = { ("MANF-A", "GRADE-A"): Discount(0.3, "MANF-A", "GRADE-A"), ("MANF-B", "GRADE-A"): Discount(0.1, "MANF-B", "GRADE-A") } self.discount_repository.find = Mock( side_effect=lambda category, tier: discounts.get((category, tier))) self.pricing_service = PricingService(self.discount_repository) customers = { "Customer": CustomerFactory.build(name="Customer"), } self.customer_repository = Mock() self.customer_repository.find = Mock( side_effect=lambda sku: customers.get(sku)) tax_rate = Mock() tax_rate.rate = 0.1 self.tax_repository = Mock() self.tax_repository.find = Mock(return_value=tax_rate) prod1 = ProductFactory.build(sku="PROD001", price_category="MANF-A") prod1.set_price(PriceValueFactory.build(price=100.00)) prod2 = ProductFactory.build(sku="PROD002", price_category="MANF-B") prod2.set_price(PriceValueFactory.build(price=20.00)) self.products = { "PROD001": prod1, "PROD002": prod2, } self.product_repository = Mock() self.product_repository.find = Mock( side_effect=lambda sku: self.products.get(sku)) inv_prod1 = InventoryItemFactory.build(sku="PROD001") inv_prod1.enter_stock_on_hand(10) inv_prod2 = InventoryItemFactory.build(sku="PROD002", on_hand_buffer=7) inv_prod2.enter_stock_on_hand(10) self.inventory = { "PROD001": inv_prod1, "PROD002": inv_prod2, } self.inventory_repository = Mock() self.inventory_repository.find = Mock( side_effect=lambda sku: self.inventory.get(sku)) self.order_descriptors = { "ORD001": [ ("PROD001", 1), ("PROD002", 3), ], "ORD002": [ ("PROD001", 2), ("PROD002", 4), ] } self.order_repository = Mock() order_ids = ["ORD002", "ORD001"] self.order_repository.next_id = Mock( side_effect=lambda: order_ids.pop())