diff options
Diffstat (limited to 'archaeological_context_records')
| -rw-r--r-- | archaeological_context_records/tests.py | 64 | 
1 files changed, 54 insertions, 10 deletions
diff --git a/archaeological_context_records/tests.py b/archaeological_context_records/tests.py index 769d6a2b2..c1117a68d 100644 --- a/archaeological_context_records/tests.py +++ b/archaeological_context_records/tests.py @@ -1369,13 +1369,27 @@ class GraphGenerationTest(ContextRecordInit, TestCase):  class SeleniumTestsContextRecords(SeleniumTests):      fixtures = CONTEXT_RECORD_FIXTURES -    def _test_cr(self, i, pks, geojsons): -        infos = self.selenium.find_element_by_xpath('//tbody/tr[' + str(i) + ']/td/a[@class="display_details"]') -        self.scroll(infos) -        infos.click() - -        label = self.selenium.find_element_by_xpath('//small[@title="ID interne" or @title="Internal ID"]').text -        label = label[1:] +    def _test_cr(self, i, pks, geojsons, method=None): +        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"]') +            self.scroll(details) +            label = panel.find_element_by_xpath(tbody + '/tr[' + str(i) + ']/td[2]').text +            details.click() +        else: +            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)) +            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"]') +            self.scroll(details) +            details.click() +            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) @@ -1383,9 +1397,9 @@ class SeleniumTestsContextRecords(SeleniumTests):              base = copy.deepcopy(geojsons[label]['get_pts'])          else:              base = copy.deepcopy(geojsons[label]['get_polys']) -        self.assertMap(base, slug_pk)          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'] @@ -1404,10 +1418,13 @@ class SeleniumTestsContextRecords(SeleniumTests):              lambda driver: driver.find_element_by_xpath(                  '//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.assertFalse(disp_bf.is_selected())          select_get_poly = dd + '/select[@id="' + get_poly_id + '"]' +        get_poly_label = dd + '/label[@id="' + get_poly_label_id + '"]'          self.assertNotInDOM(select_get_poly) +        self.assertNotInDOM(get_poly_label)          self.assertMap(base, slug_pk)          # context record specific @@ -1416,15 +1433,19 @@ class SeleniumTestsContextRecords(SeleniumTests):          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()          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) -        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="points"]').click() @@ -1433,6 +1454,7 @@ class SeleniumTestsContextRecords(SeleniumTests):              {'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" @@ -1440,10 +1462,29 @@ class SeleniumTestsContextRecords(SeleniumTests):          disp_bf.click()          self.assertFalse(disp_bf.is_selected())          self.assertNotInDOM(select_get_poly) +        self.assertNotInDOM(get_poly_label)          self.assertMap(base, slug_pk)      def test_geo_items(self):          pks, geojsons = self.pks_and_geojson() +        # from operation +        for i in range(1, 3): +            self.WebDriverWait(self.selenium, 2).until( +                lambda driver: driver.find_element_by_xpath( +                    '//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"]') +            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.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() +            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(                  lambda driver: driver.find_element_by_xpath( @@ -1453,4 +1494,7 @@ class SeleniumTestsContextRecords(SeleniumTests):              self.scroll(dropdown)              dropdown.click()              self.selenium.find_element_by_xpath('//div[@class="dropdown-menu show"]/a[@href="/record_search/"]').click() -            self._test_cr(i, pks, geojsons) +            self._test_cr(i, pks, copy.deepcopy(geojsons)) +        # from bottom table, multiple displays +        for i in range(1, 4): +            self._test_cr(i, pks, copy.deepcopy(geojsons))  | 
