diff options
Diffstat (limited to 'archaeological_warehouse/tests.py')
| -rw-r--r-- | archaeological_warehouse/tests.py | 97 | 
1 files changed, 64 insertions, 33 deletions
| diff --git a/archaeological_warehouse/tests.py b/archaeological_warehouse/tests.py index 72124e685..37c342ef7 100644 --- a/archaeological_warehouse/tests.py +++ b/archaeological_warehouse/tests.py @@ -527,15 +527,23 @@ class WarehouseTest(TestCase):  class ContainerTest(FindInit, TestCase):      fixtures = WAREHOUSE_FIXTURES -    def test_form_creation(self): -        main_warehouse = models.Warehouse.objects.create( +    def setUp(self): +        self.main_warehouse = models.Warehouse.objects.create(              name="Main",              warehouse_type=models.WarehouseType.objects.all()[0]          ) +        self.division = models.WarehouseDivision.objects.create( +            label='division') +        self.alt_division = models.WarehouseDivision.objects.create( +            label='division2') +        self.div_link = models.WarehouseDivisionLink.objects.create( +            warehouse=self.main_warehouse, division=self.division) + +    def test_form_creation(self):          data = {              'reference': 'hop-ref', -            "responsible": main_warehouse.pk, -            "location": main_warehouse.pk, +            "responsible": self.main_warehouse.pk, +            "location": self.main_warehouse.pk,              "container_type": models.ContainerType.objects.all()[0].pk          }          form = forms.ContainerForm(data=data) @@ -547,29 +555,21 @@ class ContainerTest(FindInit, TestCase):                           self.container_number + 1)      def test_change_location(self): -        main_warehouse = models.Warehouse.objects.create( -            name="Main", -            warehouse_type=models.WarehouseType.objects.all()[0] -        ) -        div = models.WarehouseDivision.objects.create(label='division') -        div_link = models.WarehouseDivisionLink.objects.create( -            warehouse=main_warehouse, division=div) -          container = models.Container.objects.create( -            reference="Test", responsible=main_warehouse, -            location=main_warehouse, +            reference="Test", responsible=self.main_warehouse, +            location=self.main_warehouse,              container_type=models.ContainerType.objects.all()[0]          )          container.save()          container = models.Container.objects.get(pk=container.pk) -        self.assertIn(main_warehouse.name, container.cached_location) +        self.assertIn(self.main_warehouse.name, container.cached_location)          models.ContainerLocalisation.objects.create( -            container=container, division=div_link, +            container=container, division=self.div_link,          )          self.assertTrue(models.ContainerLocalisation.objects.filter( -            division__warehouse=main_warehouse).count()) +            division__warehouse=self.main_warehouse).count())          # changing location remove irrelevant localisation          other_warehouse = models.Warehouse.objects.create(              name="Other", @@ -578,23 +578,58 @@ class ContainerTest(FindInit, TestCase):          container.location = other_warehouse          container.save()          self.assertFalse(models.ContainerLocalisation.objects.filter( -            division__warehouse=main_warehouse).count()) +            division__warehouse=self.main_warehouse).count()) -    def test_update_containers_on_warehouse_update(self): -        main_warehouse = models.Warehouse.objects.create( -            name="Main", +    def test_reassign_existing_division_on_warehouse_change(self): +        container = models.Container.objects.create( +            reference="Test", responsible=self.main_warehouse, +            location=self.main_warehouse, +            container_type=models.ContainerType.objects.all()[0] +        ) +        container_loca = models.ContainerLocalisation.objects.create( +            container=container, division=self.div_link, +        ) + +        alt_warehouse = models.Warehouse.objects.create( +            name="Alternative",              warehouse_type=models.WarehouseType.objects.all()[0]          ) +        new_div_link = models.WarehouseDivisionLink.objects.create( +            warehouse=alt_warehouse, division=self.division) + +        nb_container_loca = models.ContainerLocalisation.objects.count() + +        container.location = alt_warehouse +        container.save() + +        # no new container localisation +        self.assertEqual(nb_container_loca, +                         models.ContainerLocalisation.objects.count()) +        # but the new one is reaffected +        container_loca = models.ContainerLocalisation.objects.get( +            pk=container_loca.pk) +        self.assertEqual(container_loca.division, new_div_link) + +        # reaffect first division link +        self.div_link.division = self.alt_division +        self.div_link.save() +        container.location = self.main_warehouse +        container.save() +        # cannot reaffect -> the location is not preserved +        self.assertEqual(nb_container_loca, +                         models.ContainerLocalisation.objects.count() + 1) + +    def test_update_containers_on_warehouse_update(self):          container = models.Container.objects.create( -            reference="Test", responsible=main_warehouse, -            location=main_warehouse, +            reference="Test", responsible=self.main_warehouse, +            location=self.main_warehouse,              container_type=models.ContainerType.objects.all()[0]          )          container.save()          container = models.Container.objects.get(pk=container.pk) -        self.assertIn(main_warehouse.name, container.cached_location) -        main_warehouse.name = "New name" -        main_warehouse.save() +        self.assertIn(self.main_warehouse.name, container.cached_location) +        self.main_warehouse.name = "New name" +        self.main_warehouse.save()          self.assertEqual(              models.Container.objects.filter(                  need_update=True @@ -619,19 +654,15 @@ class ContainerTest(FindInit, TestCase):          profile.locate_warehouses = True          profile.save()          wgs84 = SpatialReferenceSystem.objects.get(srid=4326) -        main_warehouse = models.Warehouse.objects.create( -            name="Main", -            warehouse_type=models.WarehouseType.objects.all()[0], -        )          container = models.Container.objects.create( -            reference="Test", responsible=main_warehouse, -            location=main_warehouse, +            reference="Test", responsible=self.main_warehouse, +            location=self.main_warehouse,              container_type=models.ContainerType.objects.all()[0]          )          container.save()          self.assertEqual(container.x, None) -        main_warehouse = models.Warehouse.objects.get(pk=main_warehouse.pk) +        main_warehouse = models.Warehouse.objects.get(pk=self.main_warehouse.pk)          main_warehouse.x, main_warehouse.y = 33, 42          main_warehouse.spatial_reference_system = wgs84          main_warehouse.save() | 
