Example #1
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,
            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())
Example #2
0
    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))
Example #3
0
    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))
Example #4
0
    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)
Example #5
0
    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)
Example #6
0
    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)
Example #7
0
    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)
Example #8
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())
Example #9
0
 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)
Example #10
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)
Example #11
0
 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)
Example #12
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)