diff options
| author | Étienne Loks <etienne.loks@iggdrasil.net> | 2021-02-23 14:20:43 +0100 | 
|---|---|---|
| committer | Étienne Loks <etienne.loks@iggdrasil.net> | 2021-02-28 12:15:24 +0100 | 
| commit | e41657c0fd0f868488b5a7ab9d9aa8f4229e43cd (patch) | |
| tree | e0e128bf80472f2947a5f69874b62c705f01b893 /archaeological_warehouse/tests.py | |
| parent | 8b3eae6c7d60a54bc61e29a6ea7539b8f809d26f (diff) | |
| download | Ishtar-e41657c0fd0f868488b5a7ab9d9aa8f4229e43cd.tar.bz2 Ishtar-e41657c0fd0f868488b5a7ab9d9aa8f4229e43cd.zip | |
Warehouse: localisations importer
Diffstat (limited to 'archaeological_warehouse/tests.py')
| -rw-r--r-- | archaeological_warehouse/tests.py | 70 | 
1 files changed, 66 insertions, 4 deletions
| 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 | 
