summaryrefslogtreecommitdiff
path: root/archaeological_warehouse/tests.py
diff options
context:
space:
mode:
authorÉtienne Loks <etienne.loks@iggdrasil.net>2020-01-06 12:54:39 +0100
committerÉtienne Loks <etienne.loks@iggdrasil.net>2020-01-06 12:54:39 +0100
commita70a684f397076e9c8eeb52ef875f1749a7a513b (patch)
tree3440ed45835aacc3ec6c48b1ffa7306ce11c491b /archaeological_warehouse/tests.py
parentf71baffa929ec801b95aefd3cb21bb418759fb31 (diff)
downloadIshtar-a70a684f397076e9c8eeb52ef875f1749a7a513b.tar.bz2
Ishtar-a70a684f397076e9c8eeb52ef875f1749a7a513b.zip
Warehouse: on location change if division exists in the new warehouse container division are copied
Diffstat (limited to 'archaeological_warehouse/tests.py')
-rw-r--r--archaeological_warehouse/tests.py97
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()