From cbe8d22ccecad9e09dd70f5fdbbd78bf497671a9 Mon Sep 17 00:00:00 2001 From: Étienne Loks Date: Tue, 9 Jun 2020 12:05:37 +0200 Subject: Fix container merge --- archaeological_warehouse/tests.py | 180 ++++++++++++++++++++++++-------------- 1 file changed, 115 insertions(+), 65 deletions(-) (limited to 'archaeological_warehouse/tests.py') diff --git a/archaeological_warehouse/tests.py b/archaeological_warehouse/tests.py index 2fc492caa..a76c2763f 100644 --- a/archaeological_warehouse/tests.py +++ b/archaeological_warehouse/tests.py @@ -119,46 +119,46 @@ class SerializationTest(GenericSerializationTest, FindInit, TestCase): f2.container = c5 f2.container_ref = c5 f2.save() - wd1 = models.WarehouseDivision.objects.create( - label="Étagère", txt_idx="etagere" - ) - wd2 = models.WarehouseDivision.objects.create( - label="Allée", txt_idx="allee" - ) + ct1 = models.ContainerType.objects.all()[0] + ct2 = models.ContainerType.objects.all()[1] wl1 = models.WarehouseDivisionLink.objects.create( warehouse=w1, - division=wd1 + container_type=ct1 ) wl2 = models.WarehouseDivisionLink.objects.create( warehouse=w1, - division=wd2 + container_type=ct2 ) wl3 = models.WarehouseDivisionLink.objects.create( warehouse=w2, - division=wd2 + container_type=ct2 ) wl4 = models.WarehouseDivisionLink.objects.create( warehouse=w3, - division=wd1 + container_type=ct1 ) - models.ContainerLocalisation.objects.create( - container=c1, - division=wl1, - reference="A1" + models.Container.objects.create( + location=c1.location, + parent=c1, + container_type=ct1, + reference="A1", ) - models.ContainerLocalisation.objects.create( - container=c1, - division=wl2, + models.Container.objects.create( + location=c1.location, + parent=c1, + container_type=ct2, reference="A2" ) - models.ContainerLocalisation.objects.create( - container=c2, - division=wl3, + models.Container.objects.create( + location=c2.location, + parent=c2, + container_type=ct2, reference="A4" ) - models.ContainerLocalisation.objects.create( - container=c3, - division=wl4, + models.Container.objects.create( + location=c3.location, + parent=c3, + container_type=ct1, reference="A5" ) @@ -172,17 +172,12 @@ class SerializationTest(GenericSerializationTest, FindInit, TestCase): container_json = json.loads( res[('warehouse', "archaeological_warehouse__Container")] ) - self.assertEqual(len(container_json), 5) + self.assertEqual(len(container_json), 5 + 4) div_json = json.loads( res[('warehouse', "archaeological_warehouse__WarehouseDivisionLink")] ) self.assertEqual(len(div_json), 4) - loca_json = json.loads( - res[('warehouse', - "archaeological_warehouse__ContainerLocalisation")] - ) - self.assertEqual(len(loca_json), 4) result_queryset = Operation.objects.filter(uuid=self.operations[0].uuid) res = self.generic_serialization_test( @@ -202,11 +197,6 @@ class SerializationTest(GenericSerializationTest, FindInit, TestCase): "archaeological_warehouse__WarehouseDivisionLink")] ) self.assertEqual(len(div_json), 3) - loca_json = json.loads( - res[('warehouse', - "archaeological_warehouse__ContainerLocalisation")] - ) - self.assertEqual(len(loca_json), 3) result_queryset = ContextRecord.objects.filter( uuid=self.context_records[0].uuid) @@ -227,11 +217,6 @@ class SerializationTest(GenericSerializationTest, FindInit, TestCase): "archaeological_warehouse__WarehouseDivisionLink")] ) self.assertEqual(len(div_json), 3) - loca_json = json.loads( - res[('warehouse', - "archaeological_warehouse__ContainerLocalisation")] - ) - self.assertEqual(len(loca_json), 3) result_queryset = Find.objects.filter(uuid=self.finds[0].uuid) res = self.generic_serialization_test( @@ -251,11 +236,6 @@ class SerializationTest(GenericSerializationTest, FindInit, TestCase): "archaeological_warehouse__WarehouseDivisionLink")] ) self.assertEqual(len(div_json), 3) - loca_json = json.loads( - res[('warehouse', - "archaeological_warehouse__ContainerLocalisation")] - ) - self.assertEqual(len(loca_json), 3) result_queryset = models.Warehouse.objects.filter( id=self.warehouses[0].id) @@ -270,17 +250,12 @@ class SerializationTest(GenericSerializationTest, FindInit, TestCase): container_json = json.loads( res[('warehouse', "archaeological_warehouse__Container")] ) - self.assertEqual(len(container_json), 3) + self.assertEqual(len(container_json), 3 + 3) div_json = json.loads( res[('warehouse', "archaeological_warehouse__WarehouseDivisionLink")] ) self.assertEqual(len(div_json), 2) - loca_json = json.loads( - res[('warehouse', - "archaeological_warehouse__ContainerLocalisation")] - ) - self.assertEqual(len(loca_json), 2) def test_ope_serialization_with_warehouse_filter(self): res = self.generic_serialization_test( @@ -383,7 +358,7 @@ class WarehouseWizardCreationTest(WizardTest, FindInit, TestCase): }, 'divisions-warehouse_creation': [ { - 'division': None, + 'container_type': None, 'order': 42 } ] @@ -410,8 +385,8 @@ class WarehouseWizardCreationTest(WizardTest, FindInit, TestCase): models.WarehouseType.objects.all()[0].pk alt_data['warehouse-warehouse_creation']['warehouse_type'] = \ models.WarehouseType.objects.all()[0].pk - main_data['divisions-warehouse_creation'][0]['division'] = \ - models.WarehouseDivision.create_default_for_test()[0].pk + main_data['divisions-warehouse_creation'][0]['container_type'] = \ + models.ContainerType.objects.all()[0].pk self.warehouse_number = models.Warehouse.objects.count() self.warehouse_div_link = models.WarehouseDivisionLink.objects.count() super(WarehouseWizardCreationTest, self).pre_wizard() @@ -453,12 +428,13 @@ class ContainerWizardCreationTest(WizardTest, FindInit, TestCase): }, ), FormData( - 'Container creation with location', + 'Container creation', form_datas={ 'container-container_creation': { 'reference': 'hop-ref3', 'container_type': None, 'location': None, + 'parent': None, }, }, ), @@ -482,24 +458,19 @@ class ContainerWizardCreationTest(WizardTest, FindInit, TestCase): name="Alt", warehouse_type=models.WarehouseType.objects.all()[0] ) - div = models.WarehouseDivision.objects.create(label='division') - div_link = models.WarehouseDivisionLink.objects.create( - warehouse=alt_warehouse, division=div) alt_data['container-container_creation']["location"] = alt_warehouse.pk - alt_data['localisation-container_creation'] = { - 'division_{}'.format(div_link.pk): 'Combien ?' - } - + alt_data['container-container_creation']["parent"] = \ + models.Container.objects.create( + reference="Plop", + container_type=models.ContainerType.objects.all()[1], + location=alt_warehouse + ).pk self.container_number = models.Container.objects.count() - self.localisation_detail_number = \ - models.ContainerLocalisation.objects.count() super(ContainerWizardCreationTest, self).pre_wizard() def post_wizard(self): self.assertEqual(models.Container.objects.count(), self.container_number + 3) - self.assertEqual(models.ContainerLocalisation.objects.count(), - self.localisation_detail_number + 1) class WarehouseTest(TestCase): @@ -773,3 +744,82 @@ class ContainerTest(FindInit, TestCase): find_lst = [f for f in container_1.finds.all()] for f in [find0, find1, find2]: self.assertIn(f, find_lst) + + def test_merge_included_containers(self): + ct = models.ContainerType.objects.all()[0] + ct2 = models.ContainerType.objects.all()[1] + ct3 = models.ContainerType.objects.all()[2] + self.create_finds() + self.create_finds() + self.create_finds() + self.create_finds() + find0 = self.finds[0] + find1 = self.finds[1] + find2 = self.finds[2] + find3 = self.finds[3] + + top_container_1 = models.Container.objects.create( + reference="Topref 1", + location=self.main_warehouse, + container_type=ct) + find0.container = top_container_1 + find0.container_ref = top_container_1 + find0.save() + + top_container_2 = models.Container.objects.create( + reference="Topref 2", + location=self.main_warehouse, + container_type=ct) + find1.container = top_container_2 + find1.container_ref = top_container_2 + find1.save() + + middle_container_1 = models.Container.objects.create( + reference="Middle ref", + location=self.main_warehouse, + parent=top_container_1, + container_type=ct2) + find2.container = middle_container_1 + find2.container_ref = middle_container_1 + find2.save() + + middle_container_2 = models.Container.objects.create( + reference="Middle ref", + location=self.main_warehouse, + parent=top_container_2, + container_type=ct2) + + bottom_container_3 = models.Container.objects.create( + reference="Bottom ref", + location=self.main_warehouse, + parent=middle_container_2, + container_type=ct3) + find3.container = bottom_container_3 + find3.container_ref = bottom_container_3 + find3.save() + + top_container_1.merge(top_container_2) + + find0 = Find.objects.get(pk=find0.pk) + self.assertEqual(find0.container, top_container_1) + find1 = Find.objects.get(pk=find1.pk) + self.assertEqual(find1.container, top_container_1) + q = models.Container.objects.filter(reference="Topref 2") + self.assertEqual(q.count(), 0) + q = models.Container.objects.filter(reference="Topref 1") + self.assertEqual(q.count(), 1) + top_ref = q.all()[0] + self.assertEqual(top_ref.finds.count(), 2) + + q = models.Container.objects.filter(reference="Middle ref") + self.assertEqual(q.count(), 1) + middle = q.all()[0] + self.assertEqual(middle.parent, top_ref) + + q = models.Container.objects.filter(reference="Bottom ref") + self.assertEqual(q.count(), 1) + bottom = q.all()[0] + self.assertEqual(bottom.parent, middle) + + + -- cgit v1.2.3