コード例 #1
0
def submit_obj(obj):
    """Submits obj. Sets object id and code after that."""
    obj_type = obj.obj_type()
    object_modal.get_modal_obj(obj_type).submit_obj(obj)
    obj.obj_id = object_page.ObjectPage().get_obj_id()
    obj.code = entity_operations.obj_code(object_type=obj_type,
                                          obj_id=obj.obj_id)
コード例 #2
0
def submit_obj(obj):
  """Submits obj. Sets object id, code and modified_by after that."""
  obj_name = obj.obj_name()
  object_modal.get_modal_obj(obj_name).submit_obj(obj)
  obj.obj_id = object_page.ObjectPage().get_obj_id()
  if not obj.code:
    obj.code = entity_operations.obj_code(
        object_type=obj_name, obj_id=obj.obj_id)
  obj.modified_by = users.current_person()
コード例 #3
0
ファイル: tables.py プロジェクト: xuechaos/ggrc-core
 def raise_issue(self, issue_entity):
   """Click on "raise issue" button then fill IssueCreate modal and save
   the Issue.
   """
   raise_btn = base.Button(self._driver, self.table_element.find_element(
       *self._locators.TAB_BUTTON))
   raise_btn.click()
   object_modal.get_modal_obj("issue", self._driver).submit_obj(issue_entity)
   selenium_utils.wait_for_js_to_load(self._driver)
コード例 #4
0
def submit_obj(obj):
  """Submits obj. Sets object id, code and modified_by after that."""
  obj_name = obj.obj_name()
  object_modal.get_modal_obj(obj_name).submit_obj(obj)
  obj.obj_id = object_page.ObjectPage().get_obj_id()
  if not obj.code:
    obj.code = entity_operations.obj_code(
        object_type=obj_name, obj_id=obj.obj_id)
  obj.modified_by = users.current_person()
コード例 #5
0
 def __init__(self, _driver=None):
     super(InfoWidget, self).__init__()
     self.child_cls_name = self.__class__.__name__
     self.obj_name = objects.get_singular(self.child_cls_name)
     self.is_asmts_info_widget = (
         self.child_cls_name.lower() == objects.ASSESSMENTS)
     self.list_all_headers_txt = []
     self.list_all_values_txt = []
     self.inline_edit_controls = self._browser.elements(
         class_name="set-editable-group")
     self.tabs = tab_element.Tabs(self._browser, tab_element.Tabs.INTERNAL)
     self.add_tab_btn = self._browser.element(
         data_test_id="button_widget_add_2c925d94")
     self._attributes_tab_name = "Attributes"
     self._changelog_tab_name = "Change Log"
     # for overridable methods
     if (self.__class__ in [
             Controls, Programs, Regulations, Objectives, Contracts,
             Policies, Risks, Standards, Threat, Requirements
     ]):
         if self.is_info_page:
             self.tabs.ensure_tab(self._attributes_tab_name)
     self.comment_area = self._comment_area()
     self.edit_popup = object_modal.get_modal_obj(self.obj_name,
                                                  self._driver)
コード例 #6
0
 def click_create_and_map_obj(self):
   """Clicks `Create and map new object` link
   and returns new modal for object."""
   self._browser.element(class_name="modal-header").button(
       text="Create and map new object").click()
   return object_modal.get_modal_obj(
       obj_type=objects.get_singular(self.tree_view.obj_name))
コード例 #7
0
 def edit_obj(self, obj, **changes):
     """Opens `obj` and makes `changes` using Edit modal."""
     obj_info_page = self.open_info_page_of_obj(obj)
     obj_info_page.three_bbs.select_edit()
     modal = object_modal.get_modal_obj(obj.type, self.driver)
     modal.fill_form(**changes)
     modal.save_and_close()
コード例 #8
0
 def click_create_and_map_obj(self):
     """Clicks `Create and map new object` link
 and returns new modal for object."""
     self._browser.element(class_name="modal-header").button(
         text="Create and map new object").click()
     return object_modal.get_modal_obj(
         obj_type=objects.get_singular(self.tree_view.obj_name))
コード例 #9
0
 def click_create_and_map_obj(self):
     """Clicks `Create and map new object` link
 and returns new modal for object."""
     _selected_obj_type = next(x.label
                               for x in self._obj_type_select.options()
                               if x.selected)
     self._create_and_map_obj_btn.click()
     return object_modal.get_modal_obj(
         obj_type=objects.get_singular(_selected_obj_type))
コード例 #10
0
ファイル: info_widget.py プロジェクト: hcyg/ggrc-core
 def __init__(self, _driver=None):
   super(InfoWidget, self).__init__()
   # for overridable methods
   if (self.__class__ in
       [Programs, Regulations, Objectives, Contracts, Policies, Standards,
        Threat, Requirements]):
     if self.is_info_page:
       self.tabs.ensure_tab(self._attributes_tab_name)
   self.inline_edit_controls = self._browser.elements(
       class_name="set-editable-group")
   self.edit_popup = object_modal.get_modal_obj(self.obj_name, self._driver)
コード例 #11
0
def _assert_title_editable(obj, selenium, info_page):
  """Assert that user can edit object's title"""
  new_title = "[EDITED]" + obj.title
  info_page.three_bbs.select_edit()
  modal = object_modal.get_modal_obj(obj.type, selenium)
  modal.fill_form(title=new_title)
  modal.save_and_close()
  obj.update_attrs(
      title=new_title, modified_by=users.current_user().email,
      updated_at=rest_service.ObjectsInfoService().get_obj(
          obj=obj).updated_at)
  new_ui_obj = _get_ui_service(selenium, obj).get_obj_from_info_page(obj)
  base.Test.general_equal_assert(
      obj.repr_ui(), new_ui_obj, "audit", "custom_attributes")
コード例 #12
0
ファイル: webui_facade.py プロジェクト: javz1/ggrc-core
def _assert_title_editable(obj, selenium, info_page):
    """Assert that user can edit object's title"""
    new_title = "[EDITED]" + obj.title
    info_page.three_bbs.select_edit()
    modal = object_modal.get_modal_obj(obj.type, selenium)
    modal.fill_form(title=new_title)
    modal.save_and_close()
    obj.update_attrs(title=new_title,
                     modified_by=users.current_user().email,
                     updated_at=rest_service.ObjectsInfoService().get_obj(
                         obj=obj).updated_at)
    new_ui_obj = _get_ui_service(selenium, obj).get_obj_from_info_page(obj)
    base.Test.general_equal_assert(obj.repr_ui(), new_ui_obj, "audit",
                                   "custom_attributes")
コード例 #13
0
 def test_default_values_in_create_task_popup(
     self, app_workflow, app_task_group, selenium
 ):
   """Test expected default values in Create Task popup."""
   # pylint: disable=invalid-name
   workflow_ui_facade.open_create_task_group_task_popup(app_task_group)
   task_modal = object_modal.get_modal_obj("task_group_task")
   actual_start_date = ui_dict_convert.str_to_date(
       task_modal.get_start_date())
   actual_due_date = ui_dict_convert.str_to_date(
       task_modal.get_due_date())
   assert actual_start_date == date_utils.first_not_weekend_day(
       datetime.date.today())
   assert actual_due_date == actual_start_date + datetime.timedelta(days=7)
コード例 #14
0
 def test_default_values_in_create_task_popup(self, app_workflow,
                                              app_task_group, selenium):
     """Test expected default values in Create Task popup."""
     # pylint: disable=invalid-name
     workflow_ui_facade.open_create_task_group_task_popup(app_task_group)
     task_modal = object_modal.get_modal_obj("task_group_task")
     actual_start_date = ui_dict_convert.str_to_date(
         task_modal.get_start_date())
     actual_due_date = ui_dict_convert.str_to_date(
         task_modal.get_due_date())
     assert actual_start_date == date_utils.first_not_weekend_day(
         datetime.date.today())
     assert actual_due_date == actual_start_date + datetime.timedelta(
         days=7)
コード例 #15
0
ファイル: test_program_page.py プロジェクト: inesp/ggrc-core
 def test_permalink(self, selenium, program):
     """Verify url is copied to clipboard."""
     info_page = webui_service.ProgramsService(
         selenium).open_info_page_of_obj(program)
     info_page.open_info_3bbs().select_get_permalink()
     # test notification alert
     base.AnimatedComponent(selenium,
                            [locator.WidgetInfoProgram.ALERT_LINK_COPIED],
                            wait_until_visible=True)
     # test generated link
     # Doesn't work on Mac as Chromedriver / Devtools emulate keys on browser
     # level (Cmd + V works on OS level).
     # https://github.com/GoogleChrome/puppeteer/issues/1313
     # https://bugs.chromium.org/p/chromedriver/issues/detail?id=30
     info_page.open_info_3bbs().select_edit()
     modal = object_modal.get_modal_obj("program", selenium)
     modal.title_field.set(keys.Keys.CONTROL, "v")
     assert modal.title_field.value == program.url
コード例 #16
0
 def test_permalink(self, selenium, program):
   """Verify url is copied to clipboard."""
   info_page = webui_service.ProgramsService(
       selenium).open_info_page_of_obj(program)
   info_page.three_bbs.select_get_permalink()
   # test notification alert
   base.AnimatedComponent(
       selenium, [locator.WidgetInfoProgram.ALERT_LINK_COPIED],
       wait_until_visible=True)
   # test generated link
   # Doesn't work on Mac as Chromedriver / Devtools emulate keys on browser
   # level (Cmd + V works on OS level).
   # https://github.com/GoogleChrome/puppeteer/issues/1313
   # https://bugs.chromium.org/p/chromedriver/issues/detail?id=30
   info_page.three_bbs.select_edit()
   modal = object_modal.get_modal_obj("program", selenium)
   modal.title_field.set(keys.Keys.CONTROL, "v")
   assert modal.title_field.value == program.url
コード例 #17
0
 def __init__(self, _driver=None):
   super(InfoWidget, self).__init__()
   self.child_cls_name = self.__class__.__name__
   self.obj_name = objects.get_singular(self.child_cls_name)
   self.is_asmts_info_widget = (
       self.child_cls_name.lower() == objects.ASSESSMENTS)
   self.list_all_headers_txt = []
   self.list_all_values_txt = []
   self.inline_edit_controls = self._browser.elements(
       class_name="set-editable-group")
   self.tabs = tab_element.Tabs(self._browser, tab_element.Tabs.INTERNAL)
   self.add_tab_btn = self._browser.element(
       data_test_id="button_widget_add_2c925d94")
   self._attributes_tab_name = "Attributes"
   self._changelog_tab_name = "Change Log"
   # for overridable methods
   if (self.__class__ in
       [Controls, Programs, Regulations, Objectives, Contracts,
        Policies, Risks, Standards, Threats, Requirements]):
     if self.is_info_page:
       self.tabs.ensure_tab(self._attributes_tab_name)
   self.comment_area = self._comment_area()
   self.edit_popup = object_modal.get_modal_obj(self.obj_name, self._driver)
コード例 #18
0
 def create_obj_via_tree_view(self, src_obj, obj):
     """Open generic widget of mapped objects, open creation modal from
 Tree View, fill data according to object attributes and create new object.
 """
     self.open_widget_of_mapped_objs(src_obj).tree_view.open_create()
     object_modal.get_modal_obj(obj.type, self.driver).submit_obj(obj)
コード例 #19
0
 def submit_obj_modal(self, obj):
     """Submits object modal with `obj`."""
     object_modal.get_modal_obj(obj.type, self.driver).submit_obj(obj)
コード例 #20
0
ファイル: info_widget.py プロジェクト: hcyg/ggrc-core
 def edit_obj(self, **changes):
   """Makes changes `changes` to object."""
   self.three_bbs.select_edit()
   modal = object_modal.get_modal_obj(self.obj_name)
   modal.fill_form(**changes)
   modal.save_and_close()
コード例 #21
0
ファイル: workflow_tabs.py プロジェクト: xuechaos/ggrc-core
 def delete_task_group(self, task_group):
   """Deletes task group."""
   self.open_task_group(task_group)
   self._task_group_panel.click_to_edit()
   object_modal.get_modal_obj("task_group_task").delete()
コード例 #22
0
 def __init__(self, _driver=None):
     super(InfoWidget, self).__init__()
     self.child_cls_name = self.__class__.__name__
     self.obj_name = objects.get_singular(self.child_cls_name)
     self.is_asmts_info_widget = (
         self.child_cls_name.lower() == objects.ASSESSMENTS)
     self.list_all_headers_txt = []
     self.list_all_values_txt = []
     self.info_widget_locator = (self._locators.INFO_PAGE_ELEM
                                 if self.is_info_page else
                                 self._locators.INFO_PANEL_ELEM)
     self.info_widget_elem = selenium_utils.get_when_visible(
         self._driver, self.info_widget_locator)
     # common for all objects
     self.state_lbl_txt = self._elements.STATE.upper()
     self._extend_list_all_scopes(
         ["TITLE", self.state_lbl_txt],
         [self.title(), self.status()])
     self.info_3bbs_btn = self._browser.element(
         xpath=self._locators.BUTTON_3BBS_XPATH)
     self.inline_edit_controls = self._browser.elements(
         class_name="set-editable-group")
     # for Info Page
     if self.is_info_page:
         self._extend_list_all_scopes([
             self._elements.CREATED_AT.upper(),
             self._elements.MODIFIED_BY.upper(),
             self._elements.UPDATED_AT.upper()
         ], [self.created_at(),
             self.modified_by(),
             self.updated_at()])
     # for Info Panel
     else:
         self.panel = (
             SnapshotedInfoPanel(self._driver, self.info_widget_elem) if
             (self.child_cls_name.lower() in objects.ALL_SNAPSHOTABLE_OBJS
              and self.is_snapshoted_panel) else InfoPanel(
                  self._driver, self.info_widget_elem))
     # for tab controller
     if not self.is_snapshoted_panel:
         self.tab_container_elem = self.info_widget_elem.find_element(
             *self._locators.TAB_CONTAINER_CSS)
         self.tab_container = (tab_containers.AssessmentsTabContainer(
             self._driver, self.tab_container_elem)
                               if self.is_asmts_info_widget else
                               tab_containers.TabContainer(
                                   self._driver, self.tab_container_elem))
         self.tab_container.tab_controller.active_tab = (
             self.tab_container._elements.OBJ_TAB)
     # core element to find sub elements
     self.core_elem = (self.info_widget_elem if self.is_snapshoted_panel
                       else self.tab_container.active_tab_elem)
     # for overridable methods
     if (self.__class__ in [
             Controls, Programs, Regulations, Objectives, Contracts,
             Policies, Risks, Standards, Threats, Requirements
     ]):
         self._extend_list_all_scopes_by_review_state()
     self.comment_area = self._comment_area()
     self.edit_popup = object_modal.get_modal_obj(self.obj_name,
                                                  self._driver)
     self.tabs = page_tab.Tabs(self._browser, page_tab.Tabs.INTERNAL)
コード例 #23
0
 def edit_obj(self, **changes):
   """Makes changes `changes` to object."""
   self.three_bbs.select_edit()
   modal = object_modal.get_modal_obj(self.obj_name)
   modal.fill_form(**changes)
   modal.save_and_close()
コード例 #24
0
 def open_create_obj_modal(self, obj_type):
   """Click "Create object" button, select type and click."""
   self.click_create_obj_btn()
   CreateObjectDropdown().click_item_by_text(text=obj_type)
   return object_modal.get_modal_obj(obj_type=obj_type)
コード例 #25
0
ファイル: workflow_tabs.py プロジェクト: xuechaos/ggrc-core
 def create_task_group_task(self, task_group_task):
   """Creates a task group task on the tab."""
   self.open_create_task_group_task_modal(task_group_task.task_group)
   object_modal.get_modal_obj("task_group_task").submit_obj(task_group_task)
コード例 #26
0
def add_task_group(workflow, task_group):
    """Adds task group."""
    workflow_tabs.SetupTab().open_via_url(workflow)
    dashboard.Dashboard().start_task_group()
    object_modal.get_modal_obj("task_group").submit_obj(task_group)
コード例 #27
0
 def __init__(self, driver):
     super(InfoWidget, self).__init__(driver)
     self.child_cls_name = self.__class__.__name__
     self.obj_name = objects.get_singular(self.child_cls_name)
     self.is_asmts_info_widget = (
         self.child_cls_name.lower() == objects.ASSESSMENTS)
     self.list_all_headers_txt = []
     self.list_all_values_txt = []
     self.info_widget_locator = (self._locators.INFO_PAGE_ELEM
                                 if self.is_info_page else
                                 self._locators.INFO_PANEL_ELEM)
     self.info_widget_elem = selenium_utils.get_when_visible(
         self._driver, self.info_widget_locator)
     # common for all objects
     self.title = base.Element(self.info_widget_elem,
                               self._locators.TITLE_ENTERED)
     self.state_lbl_txt = self._elements.STATE.upper()
     self.state_txt = self.get_state_txt()
     self._extend_list_all_scopes(["TITLE", self.state_lbl_txt],
                                  [self.title.text, self.state_txt])
     self.info_3bbs_btn = self._browser.element(
         xpath=self._locators.BUTTON_3BBS_XPATH)
     self.inline_edit_controls = self._browser.elements(
         class_name="set-editable-group")
     # for Info Page
     if self.is_info_page:
         self.info_page_footer = base.Label(self.info_widget_elem,
                                            self._locators.TXT_FOOTER_CSS)
         self.modified_by = selenium_utils.get_when_visible(
             self.info_widget_elem, self._locators.TXT_MODIFIED_BY_CSS)
         _created_at_txt, _updated_at_txt = (
             self.info_page_footer.text.split(
                 string_utils.Symbols.WHITESPACE * 6))
         self.created_at_txt = (re.sub(element.Common.CREATED_AT,
                                       string_utils.Symbols.BLANK,
                                       _created_at_txt))
         self.updated_at_txt = (_updated_at_txt.splitlines()[2].replace(
             "on ", string_utils.Symbols.BLANK))
         self._extend_list_all_scopes([
             self._elements.CREATED_AT.upper(),
             self._elements.MODIFIED_BY.upper(),
             self._elements.UPDATED_AT.upper()
         ], [
             self.created_at_txt, self.modified_by.text, self.updated_at_txt
         ])
     # for Info Panel
     else:
         self.panel = (
             SnapshotedInfoPanel(self._driver, self.info_widget_elem) if
             (self.child_cls_name.lower() in objects.ALL_SNAPSHOTABLE_OBJS
              and self.is_snapshoted_panel) else InfoPanel(
                  self._driver, self.info_widget_elem))
     # for tab controller
     if not self.is_snapshoted_panel:
         self.tab_container_elem = self.info_widget_elem.find_element(
             *self._locators.TAB_CONTAINER_CSS)
         self.tab_container = (tab_containers.AssessmentsTabContainer(
             self._driver, self.tab_container_elem)
                               if self.is_asmts_info_widget else
                               tab_containers.TabContainer(
                                   self._driver, self.tab_container_elem))
         self.tab_container.tab_controller.active_tab = (
             self.tab_container._elements.OBJ_TAB)
     # core element to find sub elements
     self.core_elem = (self.info_widget_elem if self.is_snapshoted_panel
                       else self.tab_container.active_tab_elem)
     # for overridable methods
     self._extend_list_all_scopes_by_review_state()
     if not self.is_asmts_info_widget:
         self._extend_list_all_scopes_by_code()
     self.comment_area = self._comment_area()
     self.edit_popup = object_modal.get_modal_obj(self.obj_name,
                                                  self._driver)
     self.top_tabs = page_tab.Tabs(self._browser, page_tab.Tabs.TOP)
     self.tabs = page_tab.Tabs(self._browser, page_tab.Tabs.INTERNAL)
コード例 #28
0
ファイル: dashboard.py プロジェクト: weizai118/ggrc-core
 def open_create_obj_modal(self, obj_type):
   """Click "Create object" button, select type and click."""
   self.click_create_obj_btn()
   CreateObjectDropdown().click_item_by_text(text=obj_type)
   return object_modal.get_modal_obj(obj_type=obj_type)