diff options
Diffstat (limited to 'archaeological_warehouse/tests.py')
-rw-r--r-- | archaeological_warehouse/tests.py | 85 |
1 files changed, 80 insertions, 5 deletions
diff --git a/archaeological_warehouse/tests.py b/archaeological_warehouse/tests.py index 73cc166ac..3f4df9fad 100644 --- a/archaeological_warehouse/tests.py +++ b/archaeological_warehouse/tests.py @@ -17,14 +17,13 @@ # See the file COPYING for details. -from django.conf import settings - from archaeological_finds.tests import FindInit from ishtar_common.tests import WizardTest, WizardTestFormData as FormData, \ TestCase from archaeological_finds.tests import WAREHOUSE_FIXTURES +from ishtar_common.models import IshtarSiteProfile, SpatialReferenceSystem from archaeological_warehouse import models, views, forms @@ -189,7 +188,7 @@ class WarehouseTest(TestCase): class ContainerTest(FindInit, TestCase): fixtures = WAREHOUSE_FIXTURES - def testFormCreation(self): + def test_form_creation(self): main_warehouse = models.Warehouse.objects.create( name="Main", warehouse_type=models.WarehouseType.objects.all()[0] @@ -208,7 +207,7 @@ class ContainerTest(FindInit, TestCase): self.assertEqual(models.Container.objects.count(), self.container_number + 1) - def testChangeLocation(self): + def test_change_location(self): main_warehouse = models.Warehouse.objects.create( name="Main", warehouse_type=models.WarehouseType.objects.all()[0] @@ -222,13 +221,17 @@ class ContainerTest(FindInit, TestCase): location=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) + models.ContainerLocalisation.objects.create( container=container, division=div_link, ) self.assertTrue(models.ContainerLocalisation.objects.filter( division__warehouse=main_warehouse).count()) - # changing location remove unrelevent localisation + # changing location remove irrelevant localisation other_warehouse = models.Warehouse.objects.create( name="Other", warehouse_type=models.WarehouseType.objects.all()[0] @@ -238,3 +241,75 @@ class ContainerTest(FindInit, TestCase): self.assertFalse(models.ContainerLocalisation.objects.filter( division__warehouse=main_warehouse).count()) + def test_update_containers_on_warehouse_update(self): + 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, + 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.assertEqual( + models.Container.objects.filter( + need_update=True + ).count(), 1) + self.assertEqual( + models.Container.objects.filter( + pk=container.pk, + need_update=True + ).count(), 1) + container = models.Container.objects.get(pk=container.pk) + # process pending update + container.skip_history_when_saving = True + container._no_move = True + container.save() + container = models.Container.objects.get(pk=container.pk) + self.assertIn("New name", container.cached_location) + + def test_update_container_localisation_on_warehouse_update(self): + profile, created = IshtarSiteProfile.objects.get_or_create( + slug='default', active=True) + profile.mapping = True + 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, + 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.x, main_warehouse.y = 33, 42 + main_warehouse.spatial_reference_system = wgs84 + main_warehouse.save() + # an update is pending + self.assertEqual( + models.Container.objects.filter( + pk=container.pk, + need_update=True + ).count(), 1) + + # process pending update + container = models.Container.objects.get(pk=container.pk) + self.assertEqual(container.x, None) # update has to be done + container.skip_history_when_saving = True + container._no_move = True + container.save() + + container = models.Container.objects.get(pk=container.pk) + self.assertEqual(container.x, 33) + |