def test_should_know_if_it_is_fully_delivered_or_not_using_only_tracked_nodes( self): purchase_order = PurchaseOrderFactory() item_one = PurchaseOrderItemFactory(purchase_order=purchase_order, quantity=100) item_two = PurchaseOrderItemFactory(purchase_order=purchase_order, quantity=100) self.assertFalse(purchase_order.is_fully_delivered()) delivery = DeliveryFactory() node_one = NodeFactory( item=item_one, quantity=100, distribution_plan=delivery, tree_position=DistributionPlanNode.IMPLEMENTING_PARTNER) self.assertFalse(purchase_order.is_fully_delivered()) node_two = NodeFactory( item=item_two, quantity=100, distribution_plan=delivery, tree_position=DistributionPlanNode.IMPLEMENTING_PARTNER) self.assertFalse(purchase_order.is_fully_delivered()) delivery.track = True delivery.save() node_two.quantity = 50 node_two.save() self.assertFalse(purchase_order.is_fully_delivered()) node_two.quantity = 100 node_two.save() self.assertTrue(purchase_order.is_fully_delivered())
def test_should_delete_tracked_node_on_update_with_zero_quantity(self): node = DeliveryNodeFactory(quantity=10, track=True) self.assertEqual(DeliveryNode.objects.count(), 1) node.quantity = 0 returned_node = node.save() self.assertEqual(DeliveryNode.objects.count(), 0) self.assertTrue(isinstance(returned_node, DeliveryNode))
def test_should_ignore_updates_to_quantity_on_non_root_node(self): node_one = DeliveryNodeFactory() node = DeliveryNodeFactory(parents=[{'id': node_one.id, 'quantity': 7}]) node.quantity = 50 node.save() self.assertEqual(node.quantity_in(), 7)
def test_should_ignore_updates_to_quantity_on_non_root_node(self): node_one = DeliveryNodeFactory() node = DeliveryNodeFactory(parents=[{ 'id': node_one.id, 'quantity': 7 }]) node.quantity = 50 node.save() self.assertEqual(node.quantity_in(), 7)
def test_should_ignore_quantity_on_update_if_parents_are_specified(self): node_one = DeliveryNodeFactory() node = DeliveryNodeFactory(quantity=0) node.parents = [{'id': node_one.id, 'quantity': 7}] node.quantity = 50 node.save() self.assertEqual(node.quantity_in(), 7) node.parents = [] node.save() self.assertEqual(node.quantity_in(), 0)
def test_should_know_if_it_is_fully_delivered_or_not_using_only_tracked_nodes(self): purchase_order = PurchaseOrderFactory() item_one = PurchaseOrderItemFactory(purchase_order=purchase_order, quantity=100) item_two = PurchaseOrderItemFactory(purchase_order=purchase_order, quantity=100) self.assertFalse(purchase_order.is_fully_delivered()) delivery = DeliveryFactory() node_one = NodeFactory(item=item_one, quantity=100, distribution_plan=delivery) self.assertFalse(purchase_order.is_fully_delivered()) node_two = NodeFactory(item=item_two, quantity=100, distribution_plan=delivery) self.assertFalse(purchase_order.is_fully_delivered()) delivery.track = True delivery.save() node_two.quantity = 50 node_two.save() self.assertFalse(purchase_order.is_fully_delivered()) node_two.quantity = 100 node_two.save() self.assertTrue(purchase_order.is_fully_delivered())
def test_update_quantity_to__zero_on_root_node(self): node = DeliveryNodeFactory(quantity=100) node.quantity = 0 node.save() self.assertEqual(node.quantity_in(), 0)
def test_update_quantity_on_root_node_should_update_quantity(self): node = DeliveryNodeFactory(quantity=100) node.quantity = 50 node.save() self.assertEqual(node.quantity_in(), 50)