class RemoveResource(SeleniumTestCase): def setUp(self): self.wd = CustomWebDriver() def test_detach_resource_from_project(self): projects_page = ProjectsPage(self.wd, self) projects_page.go_to() resources_page = ResourcesPage(self.wd, self) resources_page.go_to() self.wd.find_element_by_xpath("//button[@role='button']").click() assert self.wd.wait_for_xpath("//h2[contains(text(), 'Resources')]") def test_delete_resource(self): projects_page = ProjectsPage(self.wd, self) projects_page.go_to() resources_page = ResourcesPage(self.wd, self) resources_page.go_to() self.wd.find_element_by_link_text("deramola-gpx").click() self.wd.find_element_by_xpath("//a[@title='Delete resource']").click() self.wd.switch_to_window(self.wd.window_handles[-1]) self.wd.get("%s%s" % (self.wd.current_url, "archive")) assert self.wd.wait_for_xpath("//h2[contains(text(), 'Resources')]") def tearDown(self): self.wd.quit()
class EditOrganization(SeleniumTestCase): def setUp(self): self.wd = CustomWebDriver() def test_edit_organization(self): organizations_page = OrganizationsPage(self.wd, self) organizations_page.go_to() self.wd.find_element_by_link_text( Organization.get_test_org_name()).click() self.wd.wait_for_xpath( "//h2[contains(text(), 'Organization Overview')]") self.wd.find_element_by_xpath("(//button[@type='button'])[2]").click() self.wd.find_element_by_link_text("Edit organization").click() self.wd.switch_to_window(self.wd.window_handles[-1]) self.wd.wait_for_css("#id_description") self.wd.find_element_by_id("id_description").clear() self.wd.find_element_by_id("id_description").send_keys( "Test organization description edited.") self.wd.find_element_by_name("submit").click() self.wd.wait_for_xpath( "//h2[contains(text(), 'Organization Overview')]") text = self.wd.find_element_by_xpath("//div/section/p").text assert text == "Test organization description edited." def tearDown(self): self.wd.quit()
class DeleteLocation(SeleniumTestCase): def setUp(self): self.wd = CustomWebDriver() def test_delete_location(self): projects_page = ProjectsPage(self.wd, self) projects_page.go_to() self.wd.find_element_by_link_text(Project.get_test_proj_name()).click() self.wd.wait_for_xpath("//h2[contains(text(), 'Project Overview')]") page_state = self.wd.execute_script('return document.readyState;') while page_state != 'complete': page_state = self.wd.execute_script('return document.readyState;') action = ActionChains(self.wd) elem = self.wd.find_element_by_xpath('//div[@id="project-map"]') action.move_to_element(elem).perform() self.wd.find_element_by_css_selector('img.leaflet-marker-icon').click() self.wd.find_element_by_link_text("Open location").click() self.wd.wait_for_xpath("//span[contains(text(), 'Location')]") self.wd.find_element_by_xpath("//a[@title='Delete location']").click() self.wd.switch_to_window(self.wd.window_handles[-1]) self.wd.wait_for_xpath("//button[@value='Confirm']").click() def tearDown(self): self.wd.quit()
class AddNonExistingMember(SeleniumTestCase): def setUp(self): self.wd = CustomWebDriver() def test_add_member(self): organizations_page = OrganizationsPage(self.wd, self) organizations_page.go_to() organizations_page.open_members_page() self.wd.find_element_by_link_text("Add").click() self.wd.switch_to_window(self.wd.window_handles[-1]) self.wd.wait_for_css("#id_identifier") self.wd.find_element_by_xpath('//input[@name="identifier"]').send_keys("cadasta-user-x") self.wd.find_element_by_xpath('//button[@type="submit"]').click() self.wd.wait_for_css(".has-error") elems = self.wd.find_elements_by_xpath("//*[contains(text(), 'User with username or email cadasta-user-x does not exist')]") assert len(elems) != 0 def tearDown(self): self.wd.quit()
class AddMember(SeleniumTestCase): def setUp(self): self.wd = CustomWebDriver() self.register_new_user() def test_add_member(self): organizations_page = OrganizationsPage(self.wd, self) organizations_page.go_to() organizations_page.open_members_page() self.wd.find_element_by_link_text("Add").click() self.wd.switch_to_window(self.wd.window_handles[-1]) self.wd.wait_for_css("#id_identifier") self.wd.find_element_by_xpath('//input[@name="identifier"]').send_keys("cadasta-test-user-2") self.wd.find_element_by_xpath('//button[@type="submit"]').click() self.wd.wait_for_css(".member-info") text = self.wd.find_css("h2").text assert text.startswith("MEMBER:") def tearDown(self): self.wd.quit()
class RemoveMember(SeleniumTestCase): def setUp(self): self.wd = CustomWebDriver() def test_remove_member(self): organizations_page = OrganizationsPage(self.wd, self) organizations_page.go_to() organizations_page.open_members_page() self.wd.find_element_by_link_text('cadasta-test-user-2').click() self.wd.wait_for_css(".member-info") self.wd.find_element_by_xpath('//button[@name="remove"]').click() self.wd.switch_to_window(self.wd.window_handles[-1]) self.wd.get("%s%s" % (self.wd.current_url, "remove")) self.wd.wait_for_css('.table') try: self.wd.find_element_by_link_text('cadasta-test-user-2') except NoSuchElementException: assert True def tearDown(self): self.wd.quit()
class AddLocationResource(SeleniumTestCase): def setUp(self): self.wd = CustomWebDriver() def test_attach_existing_resource_to_new_location(self): projects_page = ProjectsPage(self.wd, self) projects_page.go_to() self.wd.find_element_by_link_text(Project.get_test_proj_name()).click() self.wd.wait_for_xpath("//h2[contains(text(), 'Project Overview')]") self.wd.find_element_by_link_text("Add location").click() self.wd.wait_for_xpath( "//h3[contains(text(), 'Draw location on map')]") page_state = self.wd.execute_script('return document.readyState;') while page_state != 'complete': page_state = self.wd.execute_script('return document.readyState;') self.wd.find_element_by_css_selector( "a.leaflet-draw-draw-marker").click() action = ActionChains(self.wd) elem = self.wd.find_element_by_xpath('//div[@id="id_geometry_map"]') action.move_to_element(elem).move_by_offset(12, 12).click().perform() page_state = self.wd.execute_script('return document.readyState;') while page_state != 'complete': page_state = self.wd.execute_script('return document.readyState;') Select(self.wd.find_element_by_id("id_type")).select_by_visible_text( "Building") self.wd.find_element_by_xpath('//input[@value="Save"]').click() self.wd.wait_for_xpath("//span[contains(text(), 'Location')]") self.wd.find_element_by_xpath( "//a[contains(text(),'Resources')]").click() self.wd.find_element_by_link_text("Attach").click() self.wd.find_element_by_xpath( '//tr/td/label/strong[contains(text(), "resource-1")]').click() self.wd.find_element_by_name("submit").click() self.wd.wait_for_xpath('//a[@href="#resources"]') assert self.wd.find_element_by_xpath( '//*[contains(text(), "resource-1")]') def test_attach_existing_resource_to_existing_location(self): projects_page = ProjectsPage(self.wd, self) projects_page.go_to() self.wd.find_element_by_link_text(Project.get_test_proj_name()).click() self.wd.wait_for_xpath("//h2[contains(text(), 'Project Overview')]") page_state = self.wd.execute_script('return document.readyState;') while page_state != 'complete': page_state = self.wd.execute_script('return document.readyState;') action = ActionChains(self.wd) elem = self.wd.find_element_by_xpath('//div[@id="project-map"]') action.move_to_element(elem).perform() self.wd.find_element_by_css_selector('img.leaflet-marker-icon').click() self.wd.find_element_by_link_text("Open location").click() self.wd.wait_for_xpath("//span[contains(text(), 'Location')]") self.wd.find_element_by_xpath( "//a[contains(text(),'Resources')]").click() self.wd.find_element_by_link_text("Attach").click() self.wd.find_element_by_xpath( '//tr/td/label/strong[contains(text(), "resource-1")]').click() self.wd.find_element_by_name("submit").click() self.wd.wait_for_xpath('//a[@href="#resources"]') assert self.wd.find_element_by_xpath( '//*[contains(text(), "resource-1")]') def test_attach_new_resource_to_existing_location(self): projects_page = ProjectsPage(self.wd, self) projects_page.go_to() self.wd.find_element_by_link_text(Project.get_test_proj_name()).click() self.wd.wait_for_xpath("//h2[contains(text(), 'Project Overview')]") page_state = self.wd.execute_script('return document.readyState;') while page_state != 'complete': page_state = self.wd.execute_script('return document.readyState;') action = ActionChains(self.wd) elem = self.wd.find_element_by_xpath('//div[@id="project-map"]') action.move_to_element(elem).perform() self.wd.find_element_by_css_selector('img.leaflet-marker-icon').click() self.wd.find_element_by_link_text("Open location").click() self.wd.wait_for_xpath("//span[contains(text(), 'Location')]") self.wd.find_element_by_xpath( "//a[contains(text(),'Resources')]").click() self.wd.find_element_by_link_text("Attach").click() self.wd.switch_to_window(self.wd.window_handles[-1]) self.wd.find_element_by_link_text("Upload new").click() self.wd.wait_for_css("input.file-input") path = os.path.abspath("resources/pdf_file.pdf") self.wd.find_element_by_css_selector("input.file-input").clear() self.wd.find_element_by_css_selector("input.file-input").send_keys( path) self.wd.find_element_by_id("id_name").clear() self.wd.find_element_by_id("id_name").send_keys("resource-2") self.wd.wait_for_xpath("//a[@class='file-link']") self.wd.find_element_by_name("submit").click() self.wd.wait_for_xpath('//a[@href="#resources"]') assert self.wd.find_element_by_xpath( '//*[contains(text(), "resource-2")]') def tearDown(self): self.wd.quit()
class AddRelationshipResource(SeleniumTestCase): def setUp(self): self.wd = CustomWebDriver() def test_attach_existing_resource_to_relationship(self): projects_page = ProjectsPage(self.wd, self) projects_page.go_to() self.wd.find_element_by_link_text(Project.get_test_proj_name()).click() self.wd.wait_for_xpath("//h2[contains(text(), 'Project Overview')]") page_state = self.wd.execute_script('return document.readyState;') while page_state != 'complete': page_state = self.wd.execute_script('return document.readyState;') action = ActionChains(self.wd) elem = self.wd.find_element_by_xpath('//div[@id="project-map"]') action.move_to_element(elem).perform() self.wd.find_element_by_css_selector('img.leaflet-marker-icon').click() self.wd.find_element_by_link_text("Open location").click() self.wd.wait_for_xpath("//span[contains(text(), 'Location')]") self.wd.find_element_by_xpath( "//a[contains(text(),'Relationships')]").click() self.wd.find_element_by_xpath("//tr/td/a").click() self.wd.wait_for_xpath('//*[contains(text(), "Relationship Detail")]') self.wd.find_element_by_link_text("Attach").click() self.wd.find_element_by_xpath( '//tr/td/label/strong[contains(text(), "resource-1")]').click() self.wd.find_element_by_name("submit").click() self.wd.wait_for_xpath('//h4[contains(text(), "Resources")]') assert self.wd.find_element_by_xpath( '//*[contains(text(), "resource-1")]') def test_attach_new_resource_to_relationship(self): projects_page = ProjectsPage(self.wd, self) projects_page.go_to() self.wd.find_element_by_link_text(Project.get_test_proj_name()).click() self.wd.wait_for_xpath("//h2[contains(text(), 'Project Overview')]") page_state = self.wd.execute_script('return document.readyState;') while page_state != 'complete': page_state = self.wd.execute_script('return document.readyState;') action = ActionChains(self.wd) elem = self.wd.find_element_by_xpath('//div[@id="project-map"]') action.move_to_element(elem).perform() self.wd.find_element_by_css_selector('img.leaflet-marker-icon').click() self.wd.find_element_by_link_text("Open location").click() self.wd.wait_for_xpath("//span[contains(text(), 'Location')]") self.wd.find_element_by_xpath( "//a[contains(text(),'Relationships')]").click() self.wd.find_element_by_xpath("//tr/td/a").click() self.wd.wait_for_xpath('//*[contains(text(), "Relationship Detail")]') self.wd.find_element_by_link_text("Attach").click() self.wd.switch_to_window(self.wd.window_handles[-1]) self.wd.find_element_by_link_text("Upload new").click() self.wd.wait_for_css("input.file-input") path = os.path.abspath("resources/resource-1.pdf") self.wd.find_element_by_css_selector("input.file-input").clear() self.wd.find_element_by_css_selector("input.file-input").send_keys( path) self.wd.find_element_by_id("id_name").clear() self.wd.find_element_by_id("id_name").send_keys("resource-2") self.wd.wait_for_xpath("//a[@class='file-link']") self.wd.find_element_by_name("submit").click() self.wd.wait_for_xpath('//h4[contains(text(), "Resources")]') assert self.wd.find_element_by_xpath( '//*[contains(text(), "resource-2")]') def tearDown(self): self.wd.quit()
class PartyResource(SeleniumTestCase): def setUp(self): self.wd = CustomWebDriver() def test_add_new_resource_to_party(self): projects_page = ProjectsPage(self.wd, self) projects_page.go_to() projects_page.open_parties_page() self.wd.find_element_by_link_text("party-1").click() self.wd.wait_for_xpath("//h2[contains(text(), 'Party detail')]") self.wd.find_element_by_link_text("Attach").click() self.wd.switch_to_window(self.wd.window_handles[-1]) try: self.wd.find_element_by_xpath( "//*[contains(text(), 'Upload new resource')]") except: self.wd.find_element_by_link_text("Upload new").click() self.wd.wait_for_css("input.file-input") path = os.path.abspath("resources/pdf_file.pdf") self.wd.find_element_by_css_selector("input.file-input").clear() self.wd.find_element_by_css_selector("input.file-input").send_keys( path) self.wd.find_element_by_id("id_name").clear() self.wd.find_element_by_id("id_name").send_keys("resource-2") self.wd.wait_for_xpath("//a[@class='file-link']") self.wd.find_element_by_name("submit").click() self.wd.wait_for_xpath("//h2[contains(text(), 'Party detail')]") assert self.wd.find_element_by_xpath( '//td/div/p/a/strong[contains(text(), "resource-2")]') def test_attach_existing_resource_to_party(self): projects_page = ProjectsPage(self.wd, self) projects_page.go_to() projects_page.open_parties_page() self.wd.find_element_by_link_text("party-1").click() self.wd.wait_for_xpath("//h2[contains(text(), 'Party detail')]") self.wd.find_element_by_link_text("Attach").click() self.wd.switch_to_window(self.wd.window_handles[-1]) self.wd.find_element_by_xpath( '//tr/td/label/strong[contains(text(), "resource-1")]').click() self.wd.find_element_by_name("submit").click() self.wd.wait_for_xpath("//h2[contains(text(), 'Party detail')]") assert self.wd.find_element_by_xpath( '//td/div/p/a/strong[contains(text(), "resource-1")]') def test_detach_resource_from_party(self): projects_page = ProjectsPage(self.wd, self) projects_page.go_to() projects_page.open_parties_page() self.wd.find_element_by_link_text("party-1").click() self.wd.wait_for_xpath("//h2[contains(text(), 'Party detail')]") self.wd.find_element_by_xpath("//button[@role='button']").click() assert self.wd.wait_for_xpath("//h2[contains(text(), 'Party detail')]") def tearDown(self): self.wd.quit()
class AddLocationRelationship(SeleniumTestCase): def setUp(self): self.wd = CustomWebDriver() def test_attach_relationship_to_new_location(self): projects_page = ProjectsPage(self.wd, self) projects_page.go_to() self.wd.find_element_by_link_text(Project.get_test_proj_name()).click() self.wd.wait_for_xpath("//h2[contains(text(), 'Project Overview')]") self.wd.find_element_by_link_text("Add location").click() self.wd.wait_for_xpath( "//h3[contains(text(), 'Draw location on map')]") page_state = self.wd.execute_script('return document.readyState;') while page_state != 'complete': page_state = self.wd.execute_script('return document.readyState;') self.wd.find_element_by_css_selector( "a.leaflet-draw-draw-marker").click() action = ActionChains(self.wd) elem = self.wd.find_element_by_xpath('//div[@id="id_geometry_map"]') action.move_to_element(elem).move_by_offset(15, 15).click().perform() page_state = self.wd.execute_script('return document.readyState;') while page_state != 'complete': page_state = self.wd.execute_script('return document.readyState;') Select(self.wd.find_element_by_id("id_type")).select_by_visible_text( "Building") self.wd.find_element_by_xpath('//input[@value="Save"]').click() self.wd.wait_for_xpath("//span[contains(text(), 'Location')]") self.wd.find_element_by_link_text("Relationships").click() self.wd.find_element_by_link_text("Add relationship").click() self.wd.switch_to_window(self.wd.window_handles[-1]) self.wd.wait_for_xpath("//h3[@class='modal-title']") try: self.wd.find_element_by_id("id_name").send_keys("party-1") except ElementNotVisibleException: self.wd.find_element_by_id("add-party").click() self.wd.find_element_by_id("id_name").send_keys("party-1") Select(self.wd.find_element_by_id( "id_party_type")).select_by_visible_text("Individual") Select(self.wd.find_element_by_id( "id_tenure_type")).select_by_visible_text("Freehold") self.wd.find_element_by_name("submit").click() self.wd.wait_for_xpath('//a[@href="#relationships"]') def test_attach_relationship_to_existing_location(self): projects_page = ProjectsPage(self.wd, self) projects_page.go_to() self.wd.find_element_by_link_text(Project.get_test_proj_name()).click() self.wd.wait_for_xpath("//h2[contains(text(), 'Project Overview')]") page_state = self.wd.execute_script('return document.readyState;') while page_state != 'complete': page_state = self.wd.execute_script('return document.readyState;') action = ActionChains(self.wd) elem = self.wd.find_element_by_xpath('//div[@id="project-map"]') action.move_to_element(elem).perform() self.wd.find_element_by_css_selector('img.leaflet-marker-icon').click() self.wd.find_element_by_link_text("Open location").click() self.wd.wait_for_xpath("//span[contains(text(), 'Location')]") self.wd.find_element_by_link_text("Relationships").click() self.wd.find_element_by_link_text("Add relationship").click() self.wd.switch_to_window(self.wd.window_handles[-1]) self.wd.wait_for_xpath("//h3[@class='modal-title']") try: self.wd.find_element_by_id("id_name").send_keys("party-1") except ElementNotVisibleException: self.wd.find_element_by_id("add-party").click() self.wd.find_element_by_id("id_name").send_keys("party-1") Select(self.wd.find_element_by_id( "id_party_type")).select_by_visible_text("Individual") Select(self.wd.find_element_by_id( "id_tenure_type")).select_by_visible_text("Freehold") self.wd.find_element_by_name("submit").click() self.wd.wait_for_xpath('//a[@href="#relationships"]') def tearDown(self): self.wd.quit()