예제 #1
0
    def test_should_compute_quantity_in_from_incoming_arcs(self):
        node = DeliveryNodeFactory(quantity=0)
        ArcFactory(source=None, target=node, quantity=50)
        self.assertEqual(node.quantity_in(), 50)

        ArcFactory(source=None, target=node, quantity=50)
        self.assertEqual(node.quantity_in(), 100)

        Arc.objects.all().delete()
        self.assertEqual(node.quantity_in(), 0)
예제 #2
0
    def test_should_compute_quantity_in_from_incoming_arcs(self):
        node = DeliveryNodeFactory(quantity=0)
        ArcFactory(source=None, target=node, quantity=50)
        self.assertEqual(node.quantity_in(), 50)

        ArcFactory(source=None, target=node, quantity=50)
        self.assertEqual(node.quantity_in(), 100)

        Arc.objects.all().delete()
        self.assertEqual(node.quantity_in(), 0)
예제 #3
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)
예제 #4
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)
예제 #5
0
    def test_update_should_override_parents_when_parents_list_is_passed(self):
        node_one = DeliveryNodeFactory()
        node_two = DeliveryNodeFactory()

        node = DeliveryNodeFactory(parents=[{'id': node_one.id, 'quantity': 8}, {'id': node_two.id, 'quantity': 10}])
        self.assertEqual(node.quantity_in(), 18)

        node.parents = [{'id': node_one.id, 'quantity': 7}]
        node.save()
        self.assertEqual(node.quantity_in(), 7)

        node.parents = []
        node.save()
        self.assertEqual(node.quantity_in(), 0)
예제 #6
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)
예제 #7
0
    def test_should_create_itself_with_parent_as_list_of_parent_quantity_tuples(self):
        parent_one = DeliveryNodeFactory(quantity=100)
        parent_two = DeliveryNodeFactory(quantity=40)

        node = DeliveryNodeFactory(parents=[(parent_one, 50), (parent_two, 40)])

        self.assertEqual(node.quantity_in(), 90)
        self.assertEqual(parent_one.quantity_out(), 50)
        self.assertEqual(parent_two.quantity_out(), 40)
예제 #8
0
    def test_should_update_delivery_node_parents(self):
        node_one = DeliveryNodeFactory()
        node = DeliveryNodeFactory(parents=[{'id': node_one.id, 'quantity': 5}])

        changes = {'parents': [{'id': node_one.id, 'quantity': 8}]}
        path = '%s%d/' % (ENDPOINT_URL, node.id)
        response = self.client.patch(path, data=json.dumps(changes), content_type='application/json')

        self.assertEqual(response.status_code, 200)
        self.assertEqual(node.quantity_in(), 8)
예제 #9
0
    def test_update_should_leave_parents_intact_if_parents_are_not_specified(self):
        node_one = DeliveryNodeFactory()
        node_two = DeliveryNodeFactory()

        node = DeliveryNodeFactory(parents=[{'id': node_one.id, 'quantity': 8}, {'id': node_two.id, 'quantity': 10}])

        node.location = 'Changed'
        node.save()
        self.assertEqual(node.quantity_in(), 18)
        self.assertEqual(node.location, 'Changed')
예제 #10
0
    def test_should_create_itself_with_parent_as_list_of_parent_quantity_tuples(
            self):
        parent_one = DeliveryNodeFactory(quantity=100)
        parent_two = DeliveryNodeFactory(quantity=40)

        node = DeliveryNodeFactory(parents=[(parent_one, 50), (parent_two,
                                                               40)])

        self.assertEqual(node.quantity_in(), 90)
        self.assertEqual(parent_one.quantity_out(), 50)
        self.assertEqual(parent_two.quantity_out(), 40)
예제 #11
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)
예제 #12
0
    def test_update_should_override_parents_when_parents_list_is_passed(self):
        node_one = DeliveryNodeFactory()
        node_two = DeliveryNodeFactory()

        node = DeliveryNodeFactory(parents=[{
            'id': node_one.id,
            'quantity': 8
        }, {
            'id': node_two.id,
            'quantity': 10
        }])
        self.assertEqual(node.quantity_in(), 18)

        node.parents = [{'id': node_one.id, 'quantity': 7}]
        node.save()
        self.assertEqual(node.quantity_in(), 7)

        node.parents = []
        node.save()
        self.assertEqual(node.quantity_in(), 0)
예제 #13
0
    def test_update_should_leave_parents_intact_if_parents_are_not_specified(
            self):
        node_one = DeliveryNodeFactory()
        node_two = DeliveryNodeFactory()

        node = DeliveryNodeFactory(parents=[{
            'id': node_one.id,
            'quantity': 8
        }, {
            'id': node_two.id,
            'quantity': 10
        }])

        node.location = 'Changed'
        node.save()
        self.assertEqual(node.quantity_in(), 18)
        self.assertEqual(node.location, 'Changed')
예제 #14
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)
예제 #15
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)
예제 #16
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)
예제 #17
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)