From 5e2331815b84e7f31f1b7cd02b3594e12811d66a Mon Sep 17 00:00:00 2001 From: Étienne Loks Date: Tue, 23 Feb 2021 14:20:43 +0100 Subject: Warehouse: localisations importer --- archaeological_warehouse/tests.py | 70 ++++++++++++++++++++++++++++++++++++--- 1 file changed, 66 insertions(+), 4 deletions(-) (limited to 'archaeological_warehouse/tests.py') diff --git a/archaeological_warehouse/tests.py b/archaeological_warehouse/tests.py index 21833a08f..265a4a7ef 100644 --- a/archaeological_warehouse/tests.py +++ b/archaeological_warehouse/tests.py @@ -481,18 +481,80 @@ class ContainerWizardCreationTest(WizardTest, FindInit, TestCase): class WarehouseTest(TestCase): fixtures = WAREHOUSE_FIXTURES - def test_orga_from_warehouse(self): - w = models.Warehouse.objects.create( + def setUp(self): + self.warehouse = models.Warehouse.objects.create( name="Hophop", warehouse_type=models.WarehouseType.objects.all()[0], address="Adresse" ) - w.create_attached_organization() - w = models.Warehouse.objects.get(pk=w.pk) + self.container_types = models.ContainerType.objects.all()[:4] + + def test_orga_from_warehouse(self): + self.warehouse.create_attached_organization() + w = models.Warehouse.objects.get(pk=self.warehouse.pk) self.assertIsNotNone(w.organization) self.assertEqual(w.organization.name, "Hophop") self.assertEqual(w.organization.address, "Adresse") self.assertEqual(w.address, "") + def test_localisation_import(self): + container_nb = models.Container.objects.count() + base_value = "A;42;allée 3\;2" + error = self.warehouse._add_localisations( + base_value, return_errors=True) + self.assertTrue(error) # no division set + + for idx, ct in enumerate(self.container_types): + models.WarehouseDivisionLink.objects.create( + container_type=ct, order=idx * 10, warehouse=self.warehouse) + too_many_value = "A;42;allée 3\;2;5;42;3" + error = self.warehouse._add_localisations( + too_many_value, return_errors=True) + self.assertTrue(error) + + error = self.warehouse._add_localisations( + base_value, return_errors=True) + self.assertIsNone(error) + parent = None + for idx, reference in enumerate(("A", "42", "allée 3;2")): + q = models.Container.objects.filter( + parent=parent, + location=self.warehouse, + container_type=self.container_types[idx], + reference=reference) + self.assertEqual( + q.count(), 1, "Division {} {} - parent {} not created".format( + self.container_types[idx], reference, parent)) + parent = q.all()[0] + new_container_nb = models.Container.objects.count() + self.assertEqual(container_nb + 3, new_container_nb) + + value = "A;42;allée 4" + error = self.warehouse._add_localisations(value, return_errors=True) + self.assertIsNone(error) + # only create a new container + self.assertEqual(new_container_nb + 1, models.Container.objects.count()) + q = models.Container.objects.filter( + parent__reference="42", + parent__container_type=self.container_types[1], + parent__location=self.warehouse, + location=self.warehouse, + container_type=self.container_types[2], + reference="allée 4") + self.assertEqual(q.count(), 1) + + # test with an empty localisation + value = "A;42;;35" + error = self.warehouse._add_localisations(value, return_errors=True) + self.assertIsNone(error) + q = models.Container.objects.filter( + parent__reference="42", + parent__container_type=self.container_types[1], + parent__location=self.warehouse, + location=self.warehouse, + container_type=self.container_types[3], + reference="35") + self.assertEqual(q.count(), 1) + class ContainerTest(FindInit, TestCase): fixtures = WAREHOUSE_FIXTURES -- cgit v1.2.3