예제 #1
0
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()
예제 #2
0
class EditProjectDetails(SeleniumTestCase):

    def setUp(self):
        self.wd = CustomWebDriver()

    def test_edit_project(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_xpath("(//button[@type='button'])[2]").click()
        self.wd.find_element_by_link_text("Edit project details").click()

        self.wd.wait_for_css(".modal-title")
        self.wd.find_css('#id_description').clear()
        self.wd.find_css('#id_description').send_keys("Test project description edited.")

        elem = self.wd.find_element_by_xpath('//button[@type="submit"]')
        try :
            elem.click()
        except WebDriverException: # Fix : element not clickable in Chrome
            action = ActionChains(self.wd)
            action.move_to_element(elem).send_keys(Keys.TAB * 7).send_keys(Keys.RETURN).perform()

        self.wd.wait_for_xpath("//h2[contains(text(), 'Project Overview')]")
        text = self.wd.find_element_by_xpath("//div/section/p").text
        assert text == "Test project description edited."

    def tearDown(self):
        self.wd.quit()
예제 #3
0
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()
예제 #4
0
class AddGPXResource(SeleniumTestCase):
    def setUp(self):
        self.wd = CustomWebDriver()

    def test_add_gpx_resource(self):
        projects_page = ProjectsPage(self.wd, self)
        projects_page.go_to()
        resources_page = ResourcesPage(self.wd, self)
        resources_page.go_to()
        file_path = os.path.abspath("resources/Deramola.gpx")
        resources_page.upload_resource(file_path, "deramola-gpx")
        self.wd.wait_for_xpath("//h2[contains(text(), 'Resources')]")
        assert self.wd.find_element_by_xpath(
            '//td/div/p/a/strong[contains(text(), "deramola-gpx")]')

        self.wd.find_element_by_xpath(
            '//div[@id="sidebar"]/ul/li[@class="map"]/a').click()
        self.wd.wait_for_xpath('//div[@id="project-map"]')
        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_xpath("//a[@title='Layers']").click()
        self.wd.wait_for_css(".leaflet-control-layers-expanded")

        assert self.wd.find_css(".leaflet-control-layers-selector")
        text = self.wd.find_css(".leaflet-control-layers-group-name").text
        assert text == "deramola-gpx"

    def tearDown(self):
        self.wd.quit()
예제 #5
0
class LoadGPXFileOnMap(SeleniumTestCase):
    def setUp(self):
        self.wd = CustomWebDriver()

    def test_load_gpx_file_on_map(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_xpath(
            '//div[@id="sidebar"]/ul/li[@class="map"]/a').click()
        self.wd.wait_for_xpath('//div[@id="project-map"]')
        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_xpath("//a[@title='Layers']").click()
        self.wd.wait_for_css(".leaflet-control-layers-expanded")

        self.wd.find_element_by_xpath("//input[@type='checkbox']").click()
        assert self.wd.find_element_by_css_selector('img.leaflet-marker-icon')

    def tearDown(self):
        self.wd.quit()
예제 #6
0
class DetachLocationResource(SeleniumTestCase):
    def setUp(self):
        self.wd = CustomWebDriver()

    def test_detach_resource(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_xpath("//button[@type='submit']").click()

    def tearDown(self):
        self.wd.quit()
예제 #7
0
class AcceptedResourceTypes(SeleniumTestCase):
    def setUp(self):
        self.wd = CustomWebDriver()

    def upload_valid_resource(self, file_path, resource_name):
        projects_page = ProjectsPage(self.wd, self)
        projects_page.go_to()
        resources_page = ResourcesPage(self.wd, self)
        resources_page.go_to()
        resources_page.upload_resource(file_path, resource_name)
        self.wd.wait_for_xpath("//h2[contains(text(), 'Resources')]")

    def test_add_csv_resource(self):
        path = os.path.abspath("resources/csv_file.csv")
        self.upload_valid_resource(path, "csv-resource-1")
        assert self.wd.find_element_by_xpath(
            '//td/div/p/a/strong[contains(text(), "csv-resource-1")]')

    def test_add_doc_resource(self):
        path = os.path.abspath("resources/doc_file.doc")
        self.upload_valid_resource(path, "doc-resource-1")
        assert self.wd.find_element_by_xpath(
            '//td/div/p/a/strong[contains(text(), "doc-resource-1")]')

    def test_add_docx_resource(self):
        path = os.path.abspath("resources/docx_file.docx")
        self.upload_valid_resource(path, "docx-resource-1")
        assert self.wd.find_element_by_xpath(
            '//td/div/p/a/strong[contains(text(), "docx-resource-1")]')

    def test_add_jpg_resource(self):
        path = os.path.abspath("resources/jpg_file.jpg")
        self.upload_valid_resource(path, "jpg-resource-1")
        assert self.wd.find_element_by_xpath(
            '//td/div/p/a/strong[contains(text(), "jpg-resource-1")]')

    def test_add_mp3_resource(self):
        path = os.path.abspath("resources/mp3_file.mp3")
        self.upload_valid_resource(path, "mp3-resource-1")
        assert self.wd.find_element_by_xpath(
            '//td/div/p/a/strong[contains(text(), "mp3-resource-1")]')

    def test_add_mp4_resource(self):
        path = os.path.abspath("resources/mp4_file.mp4")
        self.upload_valid_resource(path, "mp4-resource-1")
        assert self.wd.find_element_by_xpath(
            '//td/div/p/a/strong[contains(text(), "mp4-resource-1")]')

    def test_add_png_resource(self):
        path = os.path.abspath("resources/png_file.png")
        self.upload_valid_resource(path, "png-resource-1")
        assert self.wd.find_element_by_xpath(
            '//td/div/p/a/strong[contains(text(), "png-resource-1")]')

    def tearDown(self):
        self.wd.quit()
예제 #8
0
class EditLocation(SeleniumTestCase):
    def setUp(self):
        self.wd = CustomWebDriver()

    def test_edit_location_details(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='Edit location']").click()
        self.wd.wait_for_xpath(
            "//h3[contains(text(), 'Draw location on map')]")
        Select(self.wd.find_element_by_id("id_type")).select_by_visible_text(
            "Apartment")
        self.wd.find_element_by_xpath('//input[@value="Save"]').click()

        self.wd.wait_for_xpath("//span[contains(text(), 'Location')]")
        assert self.wd.find_element_by_xpath(
            "//*[contains(text(), 'Apartment')]")

    def tearDown(self):
        self.wd.quit()
예제 #9
0
class AnonymousUserProjectView(SeleniumTestCase):
    def setUp(self):
        self.wd = CustomWebDriver()

    def test_anonymous_user_project_view(self):
        self.open("")
        self.wd.wait_for_css(".projects")
        self.wd.find_element_by_link_text("Projects").click()
        self.wd.wait_for_xpath("//h1[contains(text(), 'Projects')]")
        self.wd.find_element_by_link_text(Project.get_test_proj_name()).click()
        self.wd.wait_for_xpath("//h2[contains(text(), 'Project Overview')]")
        assert self.wd.wait_for_xpath("//*[contains(text(), 'Sign in')]")

    def tearDown(self):
        self.wd.quit()
예제 #10
0
class AnonymousUserOrganizationView(SeleniumTestCase):
    def setUp(self):
        self.wd = CustomWebDriver()

    def test_anonymous_user_project_view(self):
        self.open("")
        self.wd.wait_for_css(".organizations")
        self.wd.find_element_by_link_text("Organizations").click()
        self.wd.wait_for_xpath("//h1[contains(text(), 'Organizations')]")
        self.wd.find_element_by_link_text(
            Organization.get_test_org_name()).click()
        self.wd.wait_for_xpath(
            "//h2[contains(text(), 'Organization Overview')]")
        assert self.wd.find_element_by_xpath("//div/section/p")

    def tearDown(self):
        self.wd.quit()
예제 #11
0
class AddResource(SeleniumTestCase):

    def setUp(self):
        self.wd = CustomWebDriver()

    def test_add_resource(self):
        projects_page = ProjectsPage(self.wd, self)
        projects_page.go_to()
        resources_page = ResourcesPage(self.wd, self)
        resources_page.go_to()
        file_path = os.path.abspath("resources/pdf_file.pdf")
        resources_page.upload_resource(file_path, "resource-1")
        self.wd.wait_for_xpath("//h2[contains(text(), 'Resources')]")
        assert self.wd.find_element_by_xpath('//td/div/p/a/strong[contains(text(), "resource-1")]')

    def tearDown(self):
        self.wd.quit()
예제 #12
0
class ViewMembers(SeleniumTestCase):

    def setUp(self):
        self.wd = CustomWebDriver()

    def test_view_members(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_css_selector("span.icon.members").click()
        self.wd.wait_for_css('.table')
        elems = self.wd.find_elements_by_css_selector(".linked")
        assert len(elems) != 0

    def tearDown(self):
        self.wd.quit()
예제 #13
0
class CreatePrivateProject(SeleniumTestCase):

    def setUp(self):
        self.wd = CustomWebDriver()

    def test_new_project(self):
        projects_page = ProjectsPage(self.wd, self)
        projects_page.go_to()
        proj_name_available = False
        index = 1

        self.wd.find_element_by_xpath('//a[@href="/projects/new/"]').click()
        self.wd.wait_for_css(".wizard")
        self.wd.wait_for_xpath('//button[@type="submit"]')
        text = self.wd.find_element_by_xpath('//button[@type="submit"]').text
        assert text == "Next"
        self.wd.find_element_by_xpath('//button[@type="submit"]').click()
        self.wd.wait_for_xpath("//h3[contains(text(), '1. General Information')]")

        while not proj_name_available:
            test_proj_name = "private-project-" + `index`
            Select(self.wd.find_element_by_name("details-organization")).select_by_visible_text(
                Organization.get_test_org_name())
            self.wd.find_element_by_xpath('//input[@id="id_details-name"]').clear()
            self.wd.find_element_by_xpath('//input[@id="id_details-name"]').send_keys(test_proj_name)
            self.wd.find_element_by_xpath('//div[@class="toggle-group"]').click()
            self.wd.find_element_by_xpath('//textarea[@id="id_details-description"]').clear()
            self.wd.find_element_by_xpath('//textarea[@id="id_details-description"]').send_keys(
                "Private project description")
            elem = self.wd.find_element_by_xpath('//button[@type="submit"]')
            try :
                elem.click()
            except WebDriverException: # Fix : element not clickable in Chrome
                action = ActionChains(self.wd)
                action.move_to_element(elem).send_keys(Keys.TAB * 11).send_keys(Keys.RETURN).perform()

            time.sleep(1)
            elems = self.wd.find_elements_by_xpath(
                "//*[contains(text(), 'Project with this name already exists in this organization.')]")
            if len(elems) == 0:
                proj_name_available = True
                self.wd.wait_for_xpath("//h3[contains(text(), 'Assign permissions to members')]")
                self.wd.find_element_by_xpath('//button[@type="submit"]').click()
                self.wd.wait_for_xpath("//h2[contains(text(), 'Project Overview')]")
                text = self.wd.find_element_by_xpath("//h1[contains(@class, 'short')]").text
                assert text.endswith("PRIVATE-PROJECT-" + `index`)
            else:
                index = index + 1

    def tearDown(self):
        self.wd.quit()
예제 #14
0
class CreateOrganization(SeleniumTestCase):
    def setUp(self):
        self.wd = CustomWebDriver()

    def test_new_organization(self):
        organizations_page = OrganizationsPage(self.wd, self)
        organizations_page.go_to()
        self.wd.find_element_by_xpath(
            '//a[@href="/organizations/new/"]').click()
        self.wd.wait_for_css(".modal-title")
        self.wd.wait_for_css("#id_name")
        org_name_available = False
        index = 1

        while not org_name_available:
            test_org_name = "organization-" + ` index `
            self.wd.find_css('#id_name').clear()
            self.wd.find_css('#id_name').send_keys(test_org_name)
            self.wd.find_css('#id_description').clear()
            self.wd.find_css('#id_description').send_keys(
                "Test organization description.")
            self.wd.find_element_by_xpath('//button[@name="submit"]').click()

            time.sleep(1)
            elems = self.wd.find_elements_by_xpath(
                "//*[contains(text(), 'Organization with this Name already exists.')]"
            )
            if len(elems) == 0:
                org_name_available = True
                Organization().set_test_org_name(test_org_name)
                self.wd.wait_for_xpath(
                    "//h2[contains(text(), 'Organization Overview')]")
                text = self.wd.find_element_by_xpath(
                    "//h1[contains(@class, 'short')]").text
                assert text == "ORGANIZATION-" + ` index `
            else:
                index = index + 1

    def tearDown(self):
        self.wd.quit()
예제 #15
0
class OrganizationArchive(SeleniumTestCase):
    def setUp(self):
        self.wd = CustomWebDriver()

    def test_archive_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.open("/organizations/" + Organization.get_test_org_name() +
                  "/archive/")
        self.wd.wait_for_xpath(
            "//h2[contains(text(), 'Organization Overview')]")
        text = self.wd.find_element_by_xpath(
            "//span[contains(@class, 'label-danger')]").text
        assert text == "ARCHIVED"

    def test_unarchive_organization(self):
        organizations_page = OrganizationsPage(self.wd, self)
        organizations_page.go_to()

        self.wd.find_css("#archive-filter").click()
        self.wd.find_element_by_xpath(
            '//option[@value="archived-True"]').click()
        self.wd.find_element_by_link_text(
            Organization.get_test_org_name()).click()
        self.wd.wait_for_xpath(
            "//h2[contains(text(), 'Organization Overview')]")
        self.open("/organizations/" + Organization.get_test_org_name() +
                  "/unarchive/")
        self.wd.wait_for_xpath(
            "//h2[contains(text(), 'Organization Overview')]")

        try:
            self.wd.find_element_by_xpath(
                "//span[contains(@class, 'label-danger')]")
        except NoSuchElementException:
            assert True

    def tearDown(self):
        self.wd.quit()
예제 #16
0
class EmptyPasswordValidation(SeleniumTestCase):
    def setUp(self):
        self.wd = CustomWebDriver()

    def test_empty_password(self):
        self.open("/account/signup/")

        self.wd.find_css('#id_username').send_keys("cadasta-test-user2")
        self.wd.find_css('#id_email').send_keys("*****@*****.**")
        self.wd.find_css("#id_password1").send_keys('')
        self.wd.find_css("#id_password2").send_keys('XYZ#qwerty')
        self.wd.find_css("#id_full_name").send_keys('')
        action = ActionChains(self.wd)
        action.send_keys(Keys.TAB).send_keys(Keys.RETURN).perform()

        text = self.wd.wait_for_xpath(
            "//ul[contains(@class, 'parsley-errors-list')]").text
        assert text == "This field is required."

    def tearDown(self):
        self.wd.quit()
예제 #17
0
class PasswordValidation(SeleniumTestCase):
    def setUp(self):
        self.wd = CustomWebDriver()

    def test_invalid_password(self):
        self.open("/account/signup/")

        self.wd.find_css('#id_username').send_keys("cadasta-test-user2")
        self.wd.find_css('#id_email').send_keys("*****@*****.**")
        self.wd.find_css("#id_password1").send_keys('password123')
        self.wd.find_css("#id_password2").send_keys('password123')
        self.wd.find_css("#id_full_name").send_keys('')
        action = ActionChains(self.wd)
        action.send_keys(Keys.TAB).send_keys(Keys.RETURN).perform()

        text = self.wd.wait_for_xpath(
            "//ul[contains(@class, 'parsley-errors-list')]").text
        assert text == "Your password must contain at least 3 of the following: lowercase characters, uppercase characters, special characters, and/or numerical characters."

    def tearDown(self):
        self.wd.quit()
예제 #18
0
class RegistrationAttemptEmailNotAvailable(SeleniumTestCase):
    def setUp(self):
        self.wd = CustomWebDriver()

    def test_registration_attempt_already_taken_email(self):
        registration_page = RegistrationPage(self.wd, self)
        registration_page.go_to()

        self.wd.find_css('#id_username').send_keys("cadasta-test-user")
        self.wd.find_css('#id_email').send_keys(Credentials().get_test_email())
        self.wd.find_css("#id_password1").send_keys('XYZ#qwerty')
        self.wd.find_css("#id_password2").send_keys('XYZ#qwerty')
        self.wd.find_css("#id_full_name").send_keys('')
        action = ActionChains(self.wd)
        action.send_keys(Keys.TAB).send_keys(Keys.RETURN).perform()

        assert self.wd.wait_for_xpath(
            "//*[contains(text(), 'Another user with this email already exists')]"
        )

    def tearDown(self):
        self.wd.quit()
예제 #19
0
class ProjectAccessibility(SeleniumTestCase):

    def setUp(self):
        self.wd = CustomWebDriver()

    def test_public_project_to_private(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_xpath("(//button[@type='button'])[2]").click()
        self.wd.find_element_by_link_text("Edit project details").click()
        self.wd.wait_for_css(".modal-title")
        self.wd.find_element_by_xpath('//div[@class="toggle-group"]').click()
        elem = self.wd.find_element_by_xpath('//button[@type="submit"]')
        try :
            elem.click()
        except WebDriverException: # Fix : element not clickable in Chrome
            action = ActionChains(self.wd)
            action.move_to_element(elem).send_keys(Keys.TAB * 8).send_keys(Keys.RETURN).perform()
        assert self.wd.wait_for_xpath("//h2[contains(text(), 'Project Overview')]")

    def test_private_project_to_public(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_xpath("(//button[@type='button'])[2]").click()
        self.wd.find_element_by_link_text("Edit project details").click()
        self.wd.wait_for_css(".modal-title")
        self.wd.find_element_by_xpath('//div[@class="toggle-group"]').click()
        elem = self.wd.find_element_by_xpath('//button[@type="submit"]')
        try :
            elem.click()
        except WebDriverException: # Fix : element not clickable in Chrome
            action = ActionChains(self.wd)
            action.move_to_element(elem).send_keys(Keys.TAB * 8).send_keys(Keys.RETURN).perform()
        assert self.wd.wait_for_xpath("//h2[contains(text(), 'Project Overview')]")

    def tearDown(self):
        self.wd.quit()
예제 #20
0
class AddLocation(SeleniumTestCase):
    def setUp(self):
        self.wd = CustomWebDriver()

    def test_add_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;')
        print page_state

        self.wd.find_element_by_xpath(
            '//a[@class="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(10, 10).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(
            "Parcel")
        self.wd.find_element_by_xpath('//input[@value="Save"]').click()

        self.wd.wait_for_xpath("//span[contains(text(), 'Location')]")
        text = self.wd.find_element_by_xpath("//h2/span").text
        assert text == "LOCATION"

    def tearDown(self):
        self.wd.quit()
예제 #21
0
class AddProjectWithExtent(SeleniumTestCase):
    def setUp(self):
        self.wd = CustomWebDriver()

    def test_new_project_with_extent(self):
        projects_page = ProjectsPage(self.wd, self)
        projects_page.go_to()
        proj_name_available = False
        index = 1

        self.wd.find_element_by_xpath('//a[@href="/projects/new/"]').click()
        self.wd.wait_for_css(".wizard")

        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_xpath(
            '//a[@class="leaflet-draw-draw-polygon"]').click()
        action = ActionChains(self.wd)
        elem = self.wd.find_element_by_xpath(
            '//div[@id="id_extents_extent_map"]')
        action.move_to_element(elem).move_by_offset(10, 10).click().perform()
        action.move_to_element(elem).move_by_offset(15, 10).click().perform()
        action.move_to_element(elem).move_by_offset(15, 15).click().perform()
        action.move_to_element(elem).move_by_offset(10, 15).click().perform()
        action.move_to_element(elem).move_by_offset(10, 10).click().perform()

        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_xpath('//button[@type="submit"]').click()
        self.wd.wait_for_xpath(
            "//h3[contains(text(), '1. General Information')]")

        while not proj_name_available:
            test_proj_name = "project-with-extent-" + ` index `
            Select(self.wd.find_element_by_name(
                "details-organization")).select_by_visible_text(
                    Organization.get_test_org_name())
            self.wd.find_element_by_xpath(
                '//input[@id="id_details-name"]').clear()
            self.wd.find_element_by_xpath(
                '//input[@id="id_details-name"]').send_keys(test_proj_name)
            self.wd.find_element_by_xpath(
                '//textarea[@id="id_details-description"]').clear()
            self.wd.find_element_by_xpath(
                '//textarea[@id="id_details-description"]').send_keys(
                    "Project-with-extent description")
            elem = self.wd.find_element_by_xpath('//button[@type="submit"]')
            try:
                elem.click()
            except WebDriverException:  # Fix : element not clickable in Chrome
                action = ActionChains(self.wd)
                action.move_to_element(elem).send_keys(
                    Keys.TAB * 11).send_keys(Keys.RETURN).perform()

            time.sleep(1)
            elems = self.wd.find_elements_by_xpath(
                "//*[contains(text(), 'Project with this name already exists in this organization.')]"
            )
            if len(elems) == 0:
                proj_name_available = True
                self.wd.wait_for_xpath(
                    "//h3[contains(text(), 'Assign permissions to members')]")
                self.wd.find_element_by_xpath(
                    '//button[@type="submit"]').click()
                self.wd.wait_for_xpath(
                    "//h2[contains(text(), 'Project Overview')]")
                text = self.wd.find_element_by_xpath(
                    "//h1[contains(@class, 'short')]").text
                assert text.endswith("PROJECT-WITH-EXTENT-" + ` index `)
            else:
                index = index + 1

    def tearDown(self):
        self.wd.quit()
예제 #22
0
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()
예제 #23
0
class EditRelationshipDetails(SeleniumTestCase):
    def setUp(self):
        self.wd = CustomWebDriver()

    def test_edit_relationship_details(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.wait_for_xpath('//a[@title="Edit relationship"]').click()
        self.wd.wait_for_xpath('//*[contains(text(), "Edit Relationship")]')
        Select(self.wd.find_element_by_id(
            "id_tenure_type")).select_by_visible_text("Leasehold")
        self.wd.find_element_by_xpath('//button[@type="submit"]').click()
        self.wd.wait_for_xpath('//*[contains(text(), "Relationship Detail")]')
        assert self.wd.wait_for_xpath('//*[contains(text(), "Leasehold")]')

    def tearDown(self):
        self.wd.quit()
예제 #24
0
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()
예제 #25
0
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()
예제 #26
0
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()