diff options
| author | Quentin André <quentin.andre@imt-atlantique.net> | 2021-08-25 15:32:23 +0200 | 
|---|---|---|
| committer | Étienne Loks <etienne.loks@iggdrasil.net> | 2022-07-08 09:58:48 +0200 | 
| commit | 3411f82f63aed68ca5037e5088608b25573eab3e (patch) | |
| tree | c4c4d8ce1815e5873aab1c0af607a48f8a13f3ea /archaeological_context_records/tests.py | |
| parent | 1d0ebda9512cf3e964afb7ff31c03d9d7c8c2811 (diff) | |
| download | Ishtar-3411f82f63aed68ca5037e5088608b25573eab3e.tar.bz2 Ishtar-3411f82f63aed68ca5037e5088608b25573eab3e.zip  | |
clean version of get_geo_items with ui integration and tests
Diffstat (limited to 'archaeological_context_records/tests.py')
| -rw-r--r-- | archaeological_context_records/tests.py | 220 | 
1 files changed, 132 insertions, 88 deletions
diff --git a/archaeological_context_records/tests.py b/archaeological_context_records/tests.py index c1117a68d..a089c1dc5 100644 --- a/archaeological_context_records/tests.py +++ b/archaeological_context_records/tests.py @@ -60,7 +60,8 @@ from ishtar_common.tests import (      GenericSerializationTest,      COMMON_FIXTURES,      WAREHOUSE_FIXTURES, -    SearchText, SeleniumTests, +    SearchText, +    SeleniumTests,  )  from archaeological_operations.models import Operation @@ -952,8 +953,7 @@ class RecordRelationsTest(ContextRecordInit, TestCase):          crs = self.context_records          rel_type_1 = models.RelationType.objects.create( -            symmetrical=False, txt_idx="rel_1", -            logical_relation='included' +            symmetrical=False, txt_idx="rel_1", logical_relation="included"          )          """          6  7  8  9  10 = 11 = 12 @@ -971,31 +971,36 @@ class RecordRelationsTest(ContextRecordInit, TestCase):             1       2          """          relations = ( -            (1, 3), (2, 3), (3, 4), (3, 5), (4, 6), (4, 7), (4, 8), -            (5, 9), (5, 10) +            (1, 3), +            (2, 3), +            (3, 4), +            (3, 5), +            (4, 6), +            (4, 7), +            (4, 8), +            (5, 9), +            (5, 10),          )          models.RecordRelations._no_post_treatments = True          for child_idx, parent_idx in relations:              models.RecordRelations.objects.create(                  left_record=crs[child_idx - 1],                  right_record=crs[parent_idx - 1], -                relation_type=rel_type_1 +                relation_type=rel_type_1,              )          rel_type_2 = models.RelationType.objects.create( -            symmetrical=True, txt_idx="rel_2", -            logical_relation='equal' -        ) -        equal_relations = ( -            (10, 11), (11, 12), (5, 13), (3, 14) +            symmetrical=True, txt_idx="rel_2", logical_relation="equal"          ) +        equal_relations = ((10, 11), (11, 12), (5, 13), (3, 14))          for child_idx, parent_idx in equal_relations:              models.RecordRelations.objects.create(                  left_record=crs[child_idx - 1],                  right_record=crs[parent_idx - 1], -                relation_type=rel_type_2 +                relation_type=rel_type_2,              )          q = models.ContextRecordTree.objects.filter( -            cr_parent_id=crs[2].pk, cr_id=crs[0].pk) +            cr_parent_id=crs[2].pk, cr_id=crs[0].pk +        )          self.assertGreaterEqual(q.count(), 1)          ## use tables @@ -1052,58 +1057,60 @@ class RecordRelationsTest(ContextRecordInit, TestCase):          # test remove a node          nb = models.ContextRecordTree.objects.filter( -            cr_parent=crs[6 - 1], cr=crs[3 - 1]).count() +            cr_parent=crs[6 - 1], cr=crs[3 - 1] +        ).count()          self.assertEqual(nb, 1)          models.RecordRelations.objects.filter( -            left_record=crs[3 - 1], -            right_record=crs[4 - 1] +            left_record=crs[3 - 1], right_record=crs[4 - 1]          ).delete()          models.ContextRecordTree.update(crs[3 - 1].pk)          models.ContextRecordTree.update(crs[4 - 1].pk)          nb = models.ContextRecordTree.objects.filter( -            cr_parent=crs[6 - 1], cr=crs[3 - 1]).count() +            cr_parent=crs[6 - 1], cr=crs[3 - 1] +        ).count()          self.assertEqual(nb, 0)          # test remove a node (update equal links)          nb = models.ContextRecordTree.objects.filter( -            cr_parent=crs[10 - 1], cr=crs[14 - 1]).count() +            cr_parent=crs[10 - 1], cr=crs[14 - 1] +        ).count()          self.assertEqual(nb, 1)          models.RecordRelations.objects.filter( -            left_record=crs[3 - 1], -            right_record=crs[5 - 1] +            left_record=crs[3 - 1], right_record=crs[5 - 1]          ).delete()          models.ContextRecordTree.update(crs[3 - 1].pk)          models.ContextRecordTree.update(crs[5 - 1].pk)          nb = models.ContextRecordTree.objects.filter( -            cr_parent=crs[10 - 1], cr=crs[14 - 1]).count() +            cr_parent=crs[10 - 1], cr=crs[14 - 1] +        ).count()          self.assertEqual(nb, 0)          # auto update          models.RecordRelations._no_post_treatments = False          models.RecordRelations.objects.create( -            left_record=crs[3 - 1], -            right_record=crs[4 - 1], -            relation_type=rel_type_1 +            left_record=crs[3 - 1], right_record=crs[4 - 1], relation_type=rel_type_1          )          nb = models.ContextRecordTree.objects.filter( -            cr_parent=crs[6 - 1], cr=crs[3 - 1]).count() +            cr_parent=crs[6 - 1], cr=crs[3 - 1] +        ).count()          self.assertEqual(nb, 1)          models.RecordRelations.objects.create( -            left_record=crs[3 - 1], -            right_record=crs[5 - 1], -            relation_type=rel_type_1 +            left_record=crs[3 - 1], right_record=crs[5 - 1], relation_type=rel_type_1          )          nb = models.ContextRecordTree.objects.filter( -            cr_parent=crs[10 - 1], cr=crs[14 - 1]).count() +            cr_parent=crs[10 - 1], cr=crs[14 - 1] +        ).count()          self.assertEqual(nb, 1)          # delete          nb = models.ContextRecordTree.objects.filter( -            cr_parent=crs[13 - 1], cr=crs[1 - 1]).count() +            cr_parent=crs[13 - 1], cr=crs[1 - 1] +        ).count()          self.assertEqual(nb, 1)          crs[3 - 1].delete()          nb = models.ContextRecordTree.objects.filter( -            cr_parent=crs[13 - 1], cr=crs[1 - 1]).count() +            cr_parent=crs[13 - 1], cr=crs[1 - 1] +        ).count()          self.assertEqual(nb, 0)          # delete on views @@ -1114,7 +1121,8 @@ class RecordRelationsTest(ContextRecordInit, TestCase):          models.ContextRecordTree.objects.filter(pk__isnull=False).delete()          crs[4 - 1].delete()          q = models.ContextRecordTree.objects.filter( -            cr_parent_id=crs[1 - 1].pk, cr_id=crs[6 - 1].pk) +            cr_parent_id=crs[1 - 1].pk, cr_id=crs[6 - 1].pk +        )          self.assertGreaterEqual(q.count(), 0)      def _test_tree_(self, test_trees, context_record): @@ -1122,12 +1130,15 @@ class RecordRelationsTest(ContextRecordInit, TestCase):          for tree in test_trees:              for tree_idx in range(len(tree) - 1):                  q = models.ContextRecordTree.objects.filter( -                    cr_parent=crs[tree[tree_idx] - 1], cr=crs[tree[tree_idx + 1] - 1]) +                    cr_parent=crs[tree[tree_idx] - 1], cr=crs[tree[tree_idx + 1] - 1] +                )                  self.assertEqual( -                    q.count(), 1, +                    q.count(), +                    1,                      msg="Tree relation ({}, {}) is missing for context " -                        "record {}".format(tree[tree_idx + 1], tree[tree_idx], -                                           context_record) +                    "record {}".format( +                        tree[tree_idx + 1], tree[tree_idx], context_record +                    ),                  )      def _test_tree_generation(self, cr_idx, test_trees): @@ -1365,61 +1376,79 @@ class GraphGenerationTest(ContextRecordInit, TestCase):          self.assertNotIn('"CR 2D"', content) -@tag('ui') +@tag("ui")  class SeleniumTestsContextRecords(SeleniumTests):      fixtures = CONTEXT_RECORD_FIXTURES      def _test_cr(self, i, pks, geojsons, method=None): -        if method == 'from operation': -            tbody = '.' + '/div' * 6 + '/table/tbody' +        if method == "from operation": +            tbody = "." + "/div" * 6 + "/table/tbody"              title = self.selenium.find_element_by_xpath( -                '//h3[contains(text(), "Unité d\'Enregistrement") or contains(text(), "Context record")]') -            panel = title.find_element_by_xpath('./..') -            details = panel.find_element_by_xpath(tbody + '/tr[' + str(i) + ']/td/a[@class="display_details"]') +                '//h3[contains(text(), "Unité d\'Enregistrement") or contains(text(), "Context record")]' +            ) +            panel = title.find_element_by_xpath("./..") +            details = panel.find_element_by_xpath( +                tbody + "/tr[" + str(i) + ']/td/a[@class="display_details"]' +            )              self.scroll(details) -            label = panel.find_element_by_xpath(tbody + '/tr[' + str(i) + ']/td[2]').text +            label = panel.find_element_by_xpath( +                tbody + "/tr[" + str(i) + "]/td[2]" +            ).text              details.click()          else: -            tbody = './form' + '/div' * 7 + '/table/tbody' +            tbody = "./form" + "/div" * 7 + "/table/tbody"              title = '//h3[text()="Rechercher une unité d\'enregistrement" or text()="Context record search"]' -            self.WebDriverWait(self.selenium, 2).until(lambda driver: driver.find_element_by_xpath(title)) +            self.WebDriverWait(self.selenium, self.waiting_time).until( +                lambda driver: driver.find_element_by_xpath(title) +            )              title = self.selenium.find_element_by_xpath(title) -            panel = title.find_element_by_xpath('./..') -            details = panel.find_element_by_xpath(tbody + '/tr[' + str(i) + ']/td/a[@class="display_details"]') +            panel = title.find_element_by_xpath("./..") +            details = panel.find_element_by_xpath( +                tbody + "/tr[" + str(i) + ']/td/a[@class="display_details"]' +            )              self.scroll(details)              details.click() -            label = self.selenium.find_element_by_xpath('//small[@title="ID interne" or @title="Internal ID"]').text +            label = self.selenium.find_element_by_xpath( +                '//small[@title="ID interne" or @title="Internal ID"]' +            ).text              label = label[1:]          cr = models.ContextRecord.objects.get(pk=pks[label])          slug_pk = str(cr.SLUG) + "-" + str(cr.pk) -        if False:  # geojsons[label]['precise'] -            base = copy.deepcopy(geojsons[label]['get_pts']) -        else: -            base = copy.deepcopy(geojsons[label]['get_polys']) +        base = copy.deepcopy(geojsons[label]["get_polys"])          get_poly_id = "get-poly-for-" + slug_pk          get_poly_label_id = "get-poly-label-for-" + slug_pk          disp_bf_id = "disp-bf-for-" + slug_pk -        cr_polys = geojsons[label]['get_polys'] -        bf_labels_polys = cr_polys['properties'].pop('base-finds') -        bf_polys = {'type': 'FeatureCollection', -                    'features': [geojsons[bf_label]['get_polys'] for bf_label in bf_labels_polys] -                    } +        cr_polys = geojsons[label]["get_polys"] +        bf_labels_polys = cr_polys["properties"].pop("base-finds") +        bf_polys = { +            "type": "FeatureCollection", +            "features": [ +                geojsons[bf_label]["get_polys"] for bf_label in bf_labels_polys +            ], +        } -        cr_pts = geojsons[label]['get_pts'] -        bf_labels_pts = cr_pts['properties'].pop('base-finds') -        bf_pts = {'type': 'FeatureCollection', -                  'features': [geojsons[bf_label]['get_pts'] for bf_label in bf_labels_pts] -                  } +        cr_pts = geojsons[label]["get_pts"] +        bf_labels_pts = cr_pts["properties"].pop("base-finds") +        bf_pts = { +            "type": "FeatureCollection", +            "features": [geojsons[bf_label]["get_pts"] for bf_label in bf_labels_pts], +        } -        self.WebDriverWait(self.selenium, 2).until( +        self.WebDriverWait(self.selenium, self.waiting_time).until(              lambda driver: driver.find_element_by_xpath( -                '//dl[@class="col-12"]/dt[text()="Display geo items" or text()="Afficher les éléments"]')) +                '//dl[@class="col-12"]/dt[text()="Display geo items" or text()="Afficher les éléments"]' +            ) +        )          dd = '//dl[@class="col-12"]/dd' -        self.selenium.find_element_by_xpath(dd + '/fieldset/label[@for="' + disp_bf_id + '"]') -        disp_bf = self.selenium.find_element_by_xpath(dd + '/fieldset/input[@id="' + disp_bf_id + '"]') +        self.selenium.find_element_by_xpath( +            dd + '/fieldset/label[@for="' + disp_bf_id + '"]' +        ) +        disp_bf = self.selenium.find_element_by_xpath( +            dd + '/fieldset/input[@id="' + disp_bf_id + '"]' +        )          self.assertFalse(disp_bf.is_selected())          select_get_poly = dd + '/select[@id="' + get_poly_id + '"]'          get_poly_label = dd + '/label[@id="' + get_poly_label_id + '"]' @@ -1430,35 +1459,37 @@ class SeleniumTestsContextRecords(SeleniumTests):          # context record specific          # click on "Base finds" -        self.selenium.execute_script('return initialize_test_map(arguments[0])', slug_pk) +        self.selenium.execute_script( +            "return initialize_test_map(arguments[0])", slug_pk +        )          self.scroll(disp_bf)          disp_bf.click()          select_get_poly = dd + '/select[@id="' + get_poly_id + '"]'          get_poly = self.selenium.find_element_by_xpath(select_get_poly)          get_poly.click() -        self.selenium.find_element_by_xpath(select_get_poly + '/option[@value="polygons"]').click() +        self.selenium.find_element_by_xpath( +            select_get_poly + '/option[@value="polygons"]' +        ).click() -        bf_geoms = [ -            bf_polys, -            {'type': 'FeatureCollection', 'features': []} -        ] +        bf_geoms = [bf_polys, {"type": "FeatureCollection", "features": []}]          self.assertTrue(disp_bf.is_selected())          self.selenium.find_element_by_xpath(get_poly_label)          self.assertMap(base, slug_pk, bf_geoms)          get_poly = self.selenium.find_element_by_xpath(select_get_poly)          get_poly.click() -        self.selenium.find_element_by_xpath(select_get_poly + '/option[@value="points"]').click() -        bf_geoms = [ -            bf_pts, -            {'type': 'FeatureCollection', 'features': []} -        ] +        self.selenium.find_element_by_xpath( +            select_get_poly + '/option[@value="points"]' +        ).click() +        bf_geoms = [bf_pts, {"type": "FeatureCollection", "features": []}]          self.assertTrue(disp_bf.is_selected())          self.selenium.find_element_by_xpath(get_poly_label)          self.assertMap(base, slug_pk, bf_geoms)          # Click on "None" -        self.selenium.execute_script('return initialize_test_map(arguments[0])', slug_pk) +        self.selenium.execute_script( +            "return initialize_test_map(arguments[0])", slug_pk +        )          disp_bf.click()          self.assertFalse(disp_bf.is_selected())          self.assertNotInDOM(select_get_poly) @@ -1469,31 +1500,44 @@ class SeleniumTestsContextRecords(SeleniumTests):          pks, geojsons = self.pks_and_geojson()          # from operation          for i in range(1, 3): -            self.WebDriverWait(self.selenium, 2).until( +            self.WebDriverWait(self.selenium, self.waiting_time).until(                  lambda driver: driver.find_element_by_xpath( -                    '//a[@class="nav-link dropdown-toggle"][@id="dropdown-menu-main"]')) +                    '//a[@class="nav-link dropdown-toggle"][@id="dropdown-menu-main"]' +                ) +            )              dropdown = self.selenium.find_element_by_xpath( -                '//a[@class="nav-link dropdown-toggle"][@id="dropdown-menu-main"]') +                '//a[@class="nav-link dropdown-toggle"][@id="dropdown-menu-main"]' +            )              self.scroll(dropdown)              dropdown.click() -            self.selenium.find_element_by_xpath('//div[@class="dropdown-menu show"]/a[@href="/operation_search/"]').click() -            details = self.selenium.find_element_by_xpath('//tbody/tr[' + str(i) + ']/td/a[@class="display_details"]') +            self.selenium.find_element_by_xpath( +                '//div[@class="dropdown-menu show"]/a[@href="/operation_search/"]' +            ).click() +            details = self.selenium.find_element_by_xpath( +                "//tbody/tr[" + str(i) + ']/td/a[@class="display_details"]' +            )              self.scroll(details)              details.click()              self.selenium.find_element_by_xpath( -                '//ul[@role="tablist"]/li/a[contains(text(), "Unités d\'Enregistrement") or contains(text(), "Context records")]').click() +                '//ul[@role="tablist"]/li/a[contains(text(), "Unités d\'Enregistrement") or contains(text(), "Context records")]' +            ).click()              for j in range(1, 3):                  self._test_cr(j, pks, copy.deepcopy(geojsons), method="from operation")          # from search bar          for i in range(1, 5): -            self.WebDriverWait(self.selenium, 2).until( +            self.WebDriverWait(self.selenium, self.waiting_time).until(                  lambda driver: driver.find_element_by_xpath( -                    '//a[@class="nav-link dropdown-toggle"][@id="dropdown-menu-main"]')) +                    '//a[@class="nav-link dropdown-toggle"][@id="dropdown-menu-main"]' +                ) +            )              dropdown = self.selenium.find_element_by_xpath( -                '//a[@class="nav-link dropdown-toggle"][@id="dropdown-menu-main"]') +                '//a[@class="nav-link dropdown-toggle"][@id="dropdown-menu-main"]' +            )              self.scroll(dropdown)              dropdown.click() -            self.selenium.find_element_by_xpath('//div[@class="dropdown-menu show"]/a[@href="/record_search/"]').click() +            self.selenium.find_element_by_xpath( +                '//div[@class="dropdown-menu show"]/a[@href="/record_search/"]' +            ).click()              self._test_cr(i, pks, copy.deepcopy(geojsons))          # from bottom table, multiple displays          for i in range(1, 4):  | 
