Beispiel #1
0
 def expand_database_node(self, server_name, server_password,
                          name_of_database):
     """will expand database node under databases node"""
     db_node_expanded_status = False
     if self.expand_databases_node(server_name, server_password):
         sub_nodes_of_databases_node = self.find_by_xpath_list(
             TreeAreaLocators.sub_nodes_of_databases_node(server_name))
         index_of_required_db_node = self.get_index_of_element(
             sub_nodes_of_databases_node, name_of_database)
         expansion_status = self.get_expansion_status_of_node_element(
             self.find_by_xpath_list(
                 TreeAreaLocators.sub_nodes_of_databases_node_exp_status(
                     server_name))[index_of_required_db_node])
         if not expansion_status:
             self.driver.execute_script(
                 "arguments[0].scrollIntoView()",
                 sub_nodes_of_databases_node[index_of_required_db_node])
             webdriver.ActionChains(self.driver).double_click(
                 sub_nodes_of_databases_node[index_of_required_db_node]
             ).perform()
             if self.wait_for_elements_to_appear(
                     self.driver,
                     TreeAreaLocators.sub_nodes_of_database_node(
                         name_of_database)):
                 db_node_expanded_status = True
         else:
             db_node_expanded_status = True
     else:
         print("The databases/previous nodes not expanded", file=sys.stderr)
     return db_node_expanded_status
    def _check_datatype(self):
        # Slick grid does not render all the column if viewport is not enough
        # wide. So execute test as batch of queries.
        self.page.click_a_tree_node(
            self.test_db,
            TreeAreaLocators.sub_nodes_of_databases_node(self.server['name']))
        self.page.open_query_tool()
        self._create_enum_type()
        for batch in config_data:
            query = self.construct_select_query(batch)
            self.page.execute_query(query)
            wait = WebDriverWait(self.page.driver, 5)

            # wait for the visibility of the grid to appear
            wait.until(
                EC.visibility_of_element_located(
                    (By.XPATH, "//*[contains(@class,'column-type')]")))
            wait.until(
                EC.visibility_of_element_located(
                    (By.XPATH, "//*[contains(@class,'column-type') and "
                     "contains(.,'{}')]".format(batch['datatype'][0]))))

            canvas = wait.until(
                EC.presence_of_element_located(
                    (By.CSS_SELECTOR,
                     QueryToolLocators.query_output_canvas_css)))

            # For every sample data-type value, check the expected output.
            cnt = 2
            cells = canvas.find_elements_by_css_selector(
                QueryToolLocators.query_output_cells)
            # remove first element as it is row number.
            cells.pop(0)
            for val, cell, datatype in zip(batch['output'], cells,
                                           batch['datatype']):
                expected_output = batch['output'][cnt - 2]

                if not self._is_datatype_available_in_current_database(
                        datatype):
                    cnt += 1
                    continue

                if datatype in ('tstzrange', 'tstzrange[]'):
                    expected_output = expected_output.format(
                        **dict([('tz', self.timezone_hh_mm)]))
                try:
                    source_code = cell.text
                    PGDataypeFeatureTest.check_result(datatype, source_code,
                                                      expected_output)

                    cnt += 1
                except TimeoutException:
                    assert False,\
                        "for datatype {0}\n{1} does not match with {2}".format(
                            datatype, val, expected_output
                        )
            self.page.clear_query_tool()
Beispiel #3
0
    def test_view_data_tool_button(self):
        self.page.click_a_tree_node(
            self.test_db,
            TreeAreaLocators.sub_nodes_of_databases_node(self.server['name']))
        self.page.toggle_open_schema_node(self.server['name'],
                                          self.server['db_password'],
                                          self.test_db, 'public')
        self.page.toggle_open_tables_node(self.server['name'],
                                          self.server['db_password'],
                                          self.test_db, 'public')
        self.page.click_a_tree_node(self.test_table_name,
                                    TreeAreaLocators.sub_nodes_of_tables_node)

        self.page.retry_click(
            (By.CSS_SELECTOR,
             BrowserToolBarLocators.view_table_data_button_css),
            (By.CSS_SELECTOR, BrowserToolBarLocators.view_data_panel_css))
Beispiel #4
0
 def expand_database_node(self, server_name, server_password,
                          name_of_database):
     """will expand database node under databases node"""
     db_node_expanded_status = False
     retry = 5
     if self.expand_databases_node(server_name, server_password):
         sub_nodes_of_databases_node = self.find_by_xpath_list(
             TreeAreaLocators.sub_nodes_of_databases_node(server_name))
         index_of_required_db_node = self.get_index_of_element(
             sub_nodes_of_databases_node, name_of_database)
         expansion_status = self.get_expansion_status_of_node_element(
             self.find_by_xpath_list(
                 TreeAreaLocators.sub_nodes_of_databases_node_exp_status(
                     server_name))[index_of_required_db_node])
         if not expansion_status:
             self.driver.execute_script(
                 "arguments[0].scrollIntoView()",
                 sub_nodes_of_databases_node[index_of_required_db_node])
             while retry > 0:
                 webdriver.ActionChains(self.driver).double_click(
                     sub_nodes_of_databases_node[index_of_required_db_node]
                 ).perform()
                 if self.check_if_element_exist_by_xpath(
                         "//div[@class='ajs-header'and text()='INTERNAL SERVER "
                         "ERROR']", 1):
                     try:
                         self.click_modal('OK')
                     except Exception:
                         pass
                     retry -= 1
                 else:
                     break
             if self.wait_for_elements_to_appear(
                     self.driver,
                     TreeAreaLocators.sub_nodes_of_database_node(
                         name_of_database)):
                 db_node_expanded_status = True
         else:
             db_node_expanded_status = True
     else:
         print("The databases/previous nodes not expanded", file=sys.stderr)
     return db_node_expanded_status
Beispiel #5
0
 def expand_databases_node(self, server_name, server_password):
     """will expand databases node under server node"""
     databases_node_expanded = False
     if self.expand_server_node(server_name, server_password):
         if self.wait_for_elements_to_appear(
                 self.driver,
                 TreeAreaLocators.sub_nodes_of_a_server_node(server_name)):
             subnodes_of_server_node = self.find_by_xpath_list(
                 TreeAreaLocators.sub_nodes_of_a_server_node(server_name))
             subnode_of_server_node_exp_status = self.find_by_xpath_list(
                 TreeAreaLocators.sub_nodes_of_a_server_node_exp_status(
                     server_name))
             index_of_databases_node = self.get_index_of_element(
                 subnodes_of_server_node, "Databases")
             time.sleep(2)
             expansion_status = self.get_expansion_status_of_node_element(
                 subnode_of_server_node_exp_status[index_of_databases_node])
             if not expansion_status:
                 retry = 5
                 while retry > 0:
                     webdriver.ActionChains(self.driver).double_click(
                         subnodes_of_server_node[index_of_databases_node].
                         find_element_by_xpath(
                             ".//*[@class='aciTreeItem']")).perform()
                     if self.wait_for_elements_to_appear(
                             self.driver,
                             TreeAreaLocators.sub_nodes_of_databases_node(
                                 server_name), 3):
                         databases_node_expanded = True
                         break
                     else:
                         retry -= 1
             else:
                 databases_node_expanded = True
     else:
         print("The server/previous nodes not expanded", file=sys.stderr)
     return databases_node_expanded