コード例 #1
0
ファイル: webui_service.py プロジェクト: NeoAct/ggrc-core
 def __init__(self, driver, obj_name):
     self.driver = driver
     self.obj_name = obj_name
     self.info_widget_cls = factory.get_cls_widget(object_name=obj_name,
                                                   is_info=True)
     self.generic_widget_cls = factory.get_cls_widget(object_name=obj_name)
     self.entities_factory_cls = factory.get_cls_entity_factory(
         object_name=obj_name)
     # URLs
     self.url_mapped_objs = ("{src_obj_url}" +
                             url.get_widget_name_of_mapped_objs(obj_name))
     self.url_obj_info_page = "{obj_url}" + url.Widget.INFO
コード例 #2
0
ファイル: webui_service.py プロジェクト: Smotko/ggrc-core
 def __init__(self, driver, obj_name):
   self.driver = driver
   self.obj_name = obj_name
   self.generic_widget_cls = factory.get_cls_widget(object_name=self.obj_name)
   self.info_widget_cls = factory.get_cls_widget(
       object_name=self.obj_name, is_info=True)
   self.entities_factory_cls = factory.get_cls_entity_factory(
       object_name=self.obj_name)
   self.url_mapped_objs = (
       "{src_obj_url}" + url.get_widget_name_of_mapped_objs(self.obj_name))
   self.url_obj_info_page = "{obj_url}" + url.Widget.INFO
   self._unified_mapper = None
コード例 #3
0
    def test_mapping_via_lhn(self, selenium, new_product, new_project,
                             new_system, new_data_asset, new_process):
        """LHN mapping tests from smoke tests, section 6"""
        objects = [
            new_product, new_project, new_system, new_data_asset, new_process
        ]

        for object_ in objects:
            selenium.get(object_.url)
            header = dashboard.Header(selenium)

            # map objects
            for mapped_object in objects:
                # don't map an object to itself
                if mapped_object != object_:
                    extended_info = conftest_utils\
                        .get_lhn_accordion(selenium, mapped_object.object_name)\
                        .hover_over_visible_member(mapped_object.title_entered.text)

                    if not extended_info.is_mapped:
                        extended_info.map_to_object()

                        # workaround for CORE-3324
                        selenium_utils.hover_over_element(
                            selenium, header.toggle_user_dropdown.element)

                        # close LHN so that the contents are seen
                        header.close_lhn_menu()

                        widget = factory.get_cls_widget(
                            mapped_object.object_name)(selenium)

                        # check that the focus is on relevant widget
                        assert widget.name_from_url in mapped_object.object_name

                        # check items count
                        assert widget.member_count == 1

            # check that all mapped widgets are shown
            widget_bar = dashboard.Dashboard(selenium)

            for mapped_object in objects:
                if mapped_object != object_:
                    # select a widget
                    getattr(
                        widget_bar,
                        factory.get_method_select(mapped_object.object_name))()

                    # verify widget
                    widget = factory.get_cls_widget(
                        mapped_object.object_name)(selenium)
                    assert widget.name_from_url in mapped_object.object_name
コード例 #4
0
 def __init__(self, obj_name, driver=None):
   super(BaseWebUiService, self).__init__()
   self.obj_name = obj_name
   self.obj_type = objects.get_singular(self.obj_name, title=True)
   self.snapshot_obj_type = None
   self.generic_widget_cls = factory.get_cls_widget(object_name=self.obj_name)
   self.info_widget_cls = factory.get_cls_widget(
       object_name=self.obj_name, is_info=True)
   self.entities_factory_cls = factory.get_cls_entity_factory(
       object_name=self.obj_name)
   self.url_mapped_objs = (
       "{src_obj_url}" +
       url.Utils.get_widget_name_of_mapped_objs(self.obj_name))
   self.url_obj_info_page = "{obj_url}" + url.Widget.INFO
   self._unified_mapper = None
コード例 #5
0
ファイル: webui_service.py プロジェクト: kant/ggrc-core
 def __init__(self, driver, obj_name, is_versions_widget=False):
     self.driver = driver
     self.obj_name = obj_name
     self.is_versions_widget = is_versions_widget
     self.generic_widget_cls = factory.get_cls_widget(
         object_name=self.obj_name)
     self.info_widget_cls = factory.get_cls_widget(
         object_name=self.obj_name, is_info=True)
     self.entities_factory_cls = factory.get_cls_entity_factory(
         object_name=self.obj_name)
     self.url_mapped_objs = ("{src_obj_url}" +
                             url.get_widget_name_of_mapped_objs(
                                 self.obj_name, is_versions_widget))
     self.url_obj_info_page = "{obj_url}" + url.Widget.INFO
     self._unified_mapper = None
コード例 #6
0
def create_obj_via_lhn(driver, object_name):
    """Create object via LHN."""
    modal = get_lhn_accordion(driver, object_name).create_new()
    factory.get_cls_test_utils(object_name).enter_test_data(modal)
    modal.save_and_close()
    object_name = object_name + "InfoWidget"
    return factory.get_cls_widget(object_name, is_info=True)(driver)
コード例 #7
0
ファイル: generic_widget.py プロジェクト: zidarsk8/ggrc-core
 def __init__(self, driver, obj_name):
   self.obj_name = obj_name
   self._locators_filter = factory.get_cls_locators_generic_widget(
       object_name=obj_name)
   self._locator_widget = factory.get_locator_widget(self.obj_name.upper())
   self.info_widget_cls = factory.get_cls_widget(
       object_name=obj_name, is_info=True)
   # Filter
   self.cls_without_state_filtering = (AssessmentTemplates, )
   # Persons, Workflows, TaskGroups, Cycles, CycleTaskGroupObjectTasks
   self.button_help = base.Button(driver, self._locators_filter.BUTTON_HELP)
   self.filter = base.FilterCommon(
       driver, text_box_locator=self._locators_filter.TEXTFIELD_TO_FILTER,
       bt_submit_locator=self._locators_filter.BUTTON_FILTER)
   if self.__class__ not in self.cls_without_state_filtering:
     self.dropdown_states = base.DropdownStatic(
         driver, dropdown_locator=self._locators_filter.DROPDOWN,
         elements_locator=self._locators_filter.DROPDOWN_STATES)
   super(Widget, self).__init__(driver)
   # Tree View
   self.tree_view = TreeView(driver, self.info_widget_cls, self.obj_name)
   # Tab count
   self.members_listed = None
   self.member_count = None
   self._set_members_listed()
コード例 #8
0
 def __init__(self, driver, obj_name, is_versions_widget=False):
     self.obj_name = obj_name
     self._locators_filter = locator.BaseWidgetGeneric
     self._locators_widget = factory.get_locator_widget(
         self.obj_name.upper())
     if is_versions_widget:
         locator_parts = self._locators_widget[1].split("\"")
         locator_parts[1] += "_version"
         self._locators_widget = (self._locators_widget[0],
                                  "\"".join(locator_parts))
     self.info_widget_cls = factory.get_cls_widget(object_name=obj_name,
                                                   is_info=True)
     # Filter
     self.button_help = base.Button(driver,
                                    self._locators_filter.HELP_BTN_CSS)
     self.filter = base.FilterCommon(
         driver,
         text_box_locator=self._locators_filter.TXTFIELD_TO_FILTER_CSS,
         bt_submit_locator=self._locators_filter.FILTER_BTN_CSS)
     if self.obj_name not in objects.ALL_OBJS_WO_STATE_FILTERING:
         self.dropdown_states = base.DropdownStatic(
             driver, self._locators_filter.DD_CSS)
     super(Widget, self).__init__(driver)
     self._root = self._browser.element(
         class_name="widget governance treeview",
         id=objects.get_singular(self.obj_name))
     # Tree View
     self.tree_view = TreeView(driver, self.info_widget_cls, self.obj_name)
     # Tab count
     self.members_listed = None
     self.member_count = None
     self._set_members_listed()
コード例 #9
0
 def __init__(self, driver, obj_name, is_versions_widget=False):
   self.obj_name = obj_name
   self._locators_filter = locator.BaseWidgetGeneric
   self._locators_widget = factory.get_locator_widget(
       self.obj_name.upper())
   if is_versions_widget:
     locator_parts = self._locators_widget[1].split("\"")
     locator_parts[1] += "_version"
     self._locators_widget = (self._locators_widget[0], "\"".join(
         locator_parts))
   self.info_widget_cls = factory.get_cls_widget(
       object_name=obj_name, is_info=True)
   # Filter
   self.button_help = base.Button(driver, self._locators_filter.HELP_BTN_CSS)
   self.filter = base.FilterCommon(
       driver, text_box_locator=self._locators_filter.TXTFIELD_TO_FILTER_CSS,
       bt_submit_locator=self._locators_filter.FILTER_BTN_CSS)
   if self.obj_name not in objects.ALL_OBJS_WO_STATE_FILTERING:
     self.dropdown_states = base.DropdownStatic(
         driver, self._locators_filter.DD_CSS)
   super(Widget, self).__init__(driver)
   # Tree View
   self.tree_view = TreeView(driver, self.info_widget_cls, self.obj_name)
   # Tab count
   self.members_listed = None
   self.member_count = None
   self._set_members_listed()
コード例 #10
0
 def __init__(self, driver, obj_name):
     self.obj_name = obj_name
     self._locators_filter = factory.get_cls_locators_generic_widget(
         object_name=obj_name)
     self._locator_widget = factory.get_locator_widget(
         self.obj_name.upper())
     self.info_widget_cls = factory.get_cls_widget(object_name=obj_name,
                                                   is_info=True)
     # Filter
     self.cls_without_state_filtering = (AssessmentTemplates, )
     # Persons, Workflows, TaskGroups, Cycles, CycleTaskGroupObjectTasks
     self.button_help = base.Button(driver,
                                    self._locators_filter.BUTTON_HELP)
     self.filter = base.FilterCommon(
         driver,
         text_box_locator=self._locators_filter.TEXTFIELD_TO_FILTER,
         bt_submit_locator=self._locators_filter.BUTTON_FILTER)
     if self.__class__ not in self.cls_without_state_filtering:
         self.dropdown_states = base.DropdownStatic(
             driver,
             dropdown_locator=self._locators_filter.DROPDOWN,
             elements_locator=self._locators_filter.DROPDOWN_STATES)
     super(Widget, self).__init__(driver)
     # Tree View
     self.tree_view = TreeView(driver, self.info_widget_cls, self.obj_name)
     # Tab count
     self.members_listed = None
     self.member_count = None
     self._set_members_listed()
コード例 #11
0
 def _get_widget(self, widget_name):
   """Add attribute, click on relevant tab and return relevant widget."""
   attr_name = "tab_" + widget_name
   setattr(
       self, attr_name,
       widget_bar.Tab(self._driver, factory.get_locator_widget(widget_name)))
   getattr(self, attr_name).click()
   return factory.get_cls_widget(widget_name)(self._driver, widget_name)
コード例 #12
0
 def test_mapping_via_lhn(
     self, selenium, new_product_ui, new_project_ui, new_system_ui,
     new_data_asset_ui, new_process_ui
 ):
   """LHN mapping tests from smoke tests, section 6."""
   objects = [new_product_ui, new_project_ui, new_system_ui,
              new_data_asset_ui, new_process_ui]
   for object_ in objects:
     selenium.get(object_.url)
     header = dashboard.Header(selenium)
     # map objects
     for mapped_object in objects:
       # don't map an object to itself
       if mapped_object != object_:
         extended_info = (
             conftest_utils.get_lhn_accordion(
                 selenium,
                 mapped_object.object_name).hover_over_visible_member(
                 mapped_object.title_entered.text))
         if not extended_info.is_mapped:
           extended_info.map_to_object()
           # workaround for CORE-3324
           selenium_utils.hover_over_element(
               selenium, header.toggle_user_dropdown.element)
           # close LHN so that the contents are seen
           header.close_lhn_menu()
           widget = (
               factory.get_cls_widget(mapped_object.object_name)(selenium))
           # check that the focus is on relevant widget
           assert widget.name_from_url in mapped_object.object_name
           # check items count
           assert widget.member_count == 1
     # check that all mapped widgets are shown
     widget_bar = dashboard.Dashboard(selenium)
     for mapped_object in objects:
       if mapped_object != object_:
         # select a widget
         getattr(widget_bar,
                 factory.get_method_select(mapped_object.object_name))()
         # verify widget
         widget = (
             factory.get_cls_widget(mapped_object.object_name)(selenium))
         assert widget.name_from_url in mapped_object.object_name
コード例 #13
0
 def test_message_with_undo_btn_appears(self, reviewer,
                                        program_w_approved_via_ui_review,
                                        selenium):
   """Confirm floating message 'Review is complete' with 'Undo' button
   appears."""
   info_page = factory.get_cls_widget(
       objects.get_plural(program_w_approved_via_ui_review.type),
       is_info=True)(selenium)
   actual_elements_state = {
       "is_floating_message_visible": info_page.floating_message.exists,
       "is_undo_btn_visible": info_page.undo_button.exists}
   expected_elements_state = copy.deepcopy(actual_elements_state)
   expected_elements_state["is_floating_message_visible"] = True
   expected_elements_state["is_undo_btn_visible"] = True
   assert actual_elements_state == expected_elements_state
コード例 #14
0
 def test_message_with_undo_btn_appears(self, second_creator,
                                        program_w_approved_via_ui_review,
                                        selenium):
   """Confirm floating message 'Review is complete' with 'Undo' button
   appears."""
   info_page = factory.get_cls_widget(
       objects.get_plural(program_w_approved_via_ui_review.type),
       is_info=True)(selenium)
   actual_elements_state = {
       "is_floating_message_visible": info_page.floating_message.exists,
       "is_undo_btn_visible": info_page.undo_button.exists}
   expected_elements_state = copy.deepcopy(actual_elements_state)
   expected_elements_state["is_floating_message_visible"] = True
   expected_elements_state["is_undo_btn_visible"] = True
   assert actual_elements_state == expected_elements_state
コード例 #15
0
ファイル: generic_widget.py プロジェクト: weizai118/ggrc-core
 def __init__(self, driver, obj_name, is_versions_widget=False):
     self.obj_name = obj_name
     self._locators_filter = locator.BaseWidgetGeneric
     self.is_versions_widget = is_versions_widget
     self.info_widget_cls = factory.get_cls_widget(object_name=obj_name,
                                                   is_info=True)
     # Filter
     self.button_help = base.Button(driver,
                                    self._locators_filter.HELP_BTN_CSS)
     self.filter = base.FilterCommon(
         driver,
         text_box_locator=self._locators_filter.TXTFIELD_TO_FILTER_CSS,
         bt_submit_locator=self._locators_filter.FILTER_BTN_CSS)
     super(Widget, self).__init__(driver)
     self._root = self._browser.element(
         class_name="widget governance treeview",
         id=objects.get_singular(self.obj_name))
     # Tree View
     self.tree_view = TreeView(driver, self.info_widget_cls, self.obj_name)
     # Tab count
     self.members_listed = None
     self.member_count = None
     self._set_members_listed()
コード例 #16
0
 def __init__(self, driver, obj_name):
     self.obj_name = obj_name
     self._locators_filter = locator.BaseWidgetGeneric
     self._locators_widget = factory.get_locator_widget(
         self.obj_name.upper())
     self.info_widget_cls = factory.get_cls_widget(object_name=obj_name,
                                                   is_info=True)
     # Filter
     self.button_help = base.Button(driver,
                                    self._locators_filter.HELP_BTN_CSS)
     self.filter = base.FilterCommon(
         driver,
         text_box_locator=self._locators_filter.TXTFIELD_TO_FILTER_CSS,
         bt_submit_locator=self._locators_filter.FILTER_BTN_CSS)
     if self.obj_name not in objects.ALL_OBJS_WO_STATE_FILTERING:
         self.dropdown_states = base.DropdownStatic(
             driver, self._locators_filter.DD_CSS)
     super(Widget, self).__init__(driver)
     # Tree View
     self.tree_view = TreeView(driver, self.info_widget_cls, self.obj_name)
     # Tab count
     self.members_listed = None
     self.member_count = None
     self._set_members_listed()
コード例 #17
0
ファイル: widget_bar.py プロジェクト: VinnieJohns/ggrc-core
 def select_info(self):
   """Selects the info widget/tab. Note that each object has a different info
   page"""
   self.tab_info.click()
   return factory.get_cls_widget(
       self.__class__.__name__.lower(), is_info=True)(self._driver)
コード例 #18
0
def delete_obj_via_info_widget(driver, object_name):
  """Delete an object via Info Widget."""
  factory.get_cls_widget(object_name, is_info=True)(driver)\
      .press_object_settings() \
      .select_delete() \
      .confirm_delete()
コード例 #19
0
 def select_info(self):
     """Select Info widget/tab. Each object has different Info widget."""
     self.tab_info.click()
     return factory.get_cls_widget(self.__class__.__name__.lower(),
                                   is_info=True)(self._driver)
コード例 #20
0
ファイル: widget_bar.py プロジェクト: egorhm/ggrc-core
 def _select(self, widget_name):
   """Selects widget from Dropdown and return appropriate
   initialized Widget class"""
   self._driver.find_element(
       *factory.get_locator_add_widget(widget_name)).click()
   return factory.get_cls_widget(widget_name)(self._driver)
コード例 #21
0
ファイル: conftest_utils.py プロジェクト: Smotko/ggrc-core
def create_obj_via_lhn(driver, object_name):
  """Create object via LHN."""
  modal = get_lhn_accordion(driver, object_name).create_new()
  factory.get_cls_test_utils(object_name).enter_test_data(modal)
  modal.save_and_close()
  return factory.get_cls_widget(object_name, is_info=True)(driver)
コード例 #22
0
def info_widget_page(obj):
  """Returns a corresponding page object from info_widget module."""
  return factory.get_cls_widget(object_name=obj.obj_name(), is_info=True)()
コード例 #23
0
ファイル: widget_bar.py プロジェクト: jasonray716/ggrc-core
 def _select(self, widget_name):
     """Selects a widget from the dropdown and returns the appropriate
 initialized widget class"""
     self._driver.find_element(*factory.get_locator_add_widget(widget_name))\
         .click()
     return factory.get_cls_widget(widget_name)(self._driver)
コード例 #24
0
ファイル: conftest_utils.py プロジェクト: Smotko/ggrc-core
def delete_obj_via_info_widget(driver, object_name):
  """Delete object via Info Widget."""
  (factory.get_cls_widget(object_name, is_info=True)(driver)
   .open_3bbs().select_delete().confirm_delete())
コード例 #25
0
def delete_obj_via_info_widget(driver, object_name):
    """Delete object via Info Widget."""
    (factory.get_cls_widget(
        object_name,
        is_info=True)(driver).open_3bbs().select_delete().confirm_delete())
コード例 #26
0
def info_widget_page(obj):
  """Returns a corresponding page object from info_widget module."""
  return factory.get_cls_widget(object_name=obj.obj_name(), is_info=True)()
コード例 #27
0
def delete_object_on_info_widget(driver, object_name):
    """Deletes a object when the info widget is opened"""
    factory.get_cls_widget(object_name, is_info=True)(driver)\
        .press_object_settings() \
        .select_delete() \
        .confirm_delete()
コード例 #28
0
 def select_info(self):
     """Selects the info widget/tab. Note that each object has a different info
 page"""
     self.tab_info.click()
     return factory.get_cls_widget(self.__class__.__name__.lower(),
                                   is_info=True)(self._driver)
コード例 #29
0
 def select_info(self):
   """Select Info widget/tab. Each object has different Info widget."""
   self.tab_info.click()
   return factory.get_cls_widget(
       self.__class__.__name__.lower(), is_info=True)(self._driver)