Esempio n. 1
0
    def get_comment_obj(self, paren_obj, comment_description):
        """Get and return comment object according to 'paren_obj' type) and
    comment_description 'paren_obj'. As default 'is_sort_by_created_at' and if
    even comments have the same descriptions query return selection w/ latest
    created datetime.
    """
        @test_utils.wait_for
        def get_obj_comment_response_values():
            """Get values fom response."""
            # pylint: disable=invalid-name
            filters = query.Query.expression_get_comment_by_desc(
                parent_type=paren_obj.type,
                parent_id=paren_obj.id,
                comment_desc=comment_description)
            order_by = [{"name": "created_at", "desc": True}]
            return self.get_obj_dict(objects.get_obj_type(objects.COMMENTS),
                                     filters=filters,
                                     order_by=order_by)

        comment = entities_factory.CommentsFactory().create()
        comment.__dict__.update({
            k: v
            for k, v in get_obj_comment_response_values[0].iteritems()
            if v and k not in [
                "type",
            ]
        })
        return comment
 def test_add_comment_to_asmt_via_info_panel(
     self, new_program_rest, new_audit_rest, new_assessment_rest, selenium
 ):
   """Check via UI of possibility to correctly add comment to Assessment via
   Info Panel.
   Preconditions:
   - Program created via REST API.
   - Audit created under Program via REST API.
   - Assessment created under Audit via REST API.
   Test parameters: None
   """
   expected_asmt_comments = [entities_factory.CommentsFactory().create()]
   expected_asmt = new_assessment_rest
   asmts_ui_service = webui_service.AssessmentsService(selenium)
   asmt_comments_panel = asmts_ui_service.add_comments(
       src_obj=new_audit_rest, obj=expected_asmt,
       comment_objs=expected_asmt_comments)
   assert asmt_comments_panel.is_input_empty is True
   # 'expected_asmt_comments': created_at (None) *factory
   expected_asmt_comments = [expected_comment.update_attrs(
       created_at=self.info_service.get_comment_obj(
           paren_obj=expected_asmt,
           comment_description=expected_comment.description).created_at
   ).repr_ui() for expected_comment in expected_asmt_comments]
   # 'expected_asmt': updated_at (outdated)
   expected_asmt = expected_asmt.update_attrs(
       updated_at=self.info_service.get_obj(obj=expected_asmt).updated_at,
       comments=expected_asmt_comments).repr_ui()
   actual_asmt = asmts_ui_service.get_obj_from_info_page(obj=expected_asmt)
   self.general_equal_assert(expected_asmt, actual_asmt, "comments")
   self.xfail_equal_assert(
       expected_asmt, actual_asmt, "Issue in app GGRC-3094", "comments")
Esempio n. 3
0
 def test_add_comment_to_asmt_via_info_panel(self, program, audit,
                                             assessment, selenium):
     """Check via UI of possibility to correctly add comment to Assessment via
 Info Panel.
 Preconditions:
 - Program created via REST API.
 - Audit created under Program via REST API.
 - Assessment created under Audit via REST API.
 Test parameters: None
 """
     expected_asmt_comments = [entities_factory.CommentsFactory().create()]
     expected_asmt = assessment
     asmts_ui_service = webui_service.AssessmentsService(selenium)
     asmt_comments_panel = asmts_ui_service.add_comments(
         src_obj=audit,
         obj=expected_asmt,
         comment_objs=expected_asmt_comments)
     assert asmt_comments_panel.comment_input.is_empty is True
     # 'expected_asmt_comments': created_at (None) *factory
     expected_asmt_comments = [
         expected_comment.update_attrs(created_at=self.info_service(
         ).get_comment_obj(paren_obj=expected_asmt,
                           comment_description=expected_comment.description
                           ).created_at).repr_ui()
         for expected_comment in expected_asmt_comments
     ]
     # 'expected_asmt': updated_at (outdated)
     expected_asmt.update_attrs(updated_at=self.info_service().get_obj(
         obj=expected_asmt).updated_at,
                                comments=expected_asmt_comments,
                                status=object_states.IN_PROGRESS).repr_ui()
     actual_asmt = asmts_ui_service.get_obj_from_info_page(
         obj=expected_asmt)
     # 'actual_asmt': audit (None)
     self.general_equal_assert(expected_asmt, actual_asmt, "audit")
Esempio n. 4
0
 def test_add_comment_to_asmt_via_info_panel(self, new_program_rest,
                                             new_audit_rest,
                                             new_assessment_rest, selenium):
     """Check via UI of possibility to correctly add comment to Assessment via
 Info Panel.
 Preconditions:
 - Program created via REST API.
 - Audit created under Program via REST API.
 - Assessment created under Audit via REST API.
 Test parameters: None
 """
     expected_asmt = new_assessment_rest
     expected_asmt_comments = [
         entities_factory.CommentsFactory().create().repr_ui()
     ]
     # due to 'actual_asmt.updated_at = None'
     (expected_asmt.update_attrs(comments=expected_asmt_comments,
                                 updated_at=None).repr_ui())
     assessments_service = webui_service.AssessmentsService(selenium)
     asmt_comments_panel = assessments_service.add_comments(
         src_obj=new_audit_rest,
         obj=expected_asmt,
         comment_objs=expected_asmt_comments)
     assert asmt_comments_panel.is_input_empty is True
     actual_asmt = (webui_service.AssessmentsService(
         selenium).get_list_objs_from_info_panels(
             src_obj=new_audit_rest,
             objs=expected_asmt).update_attrs(comments={"created_at": None},
                                              is_replace_dicts_values=True))
     assert expected_asmt == actual_asmt, (
         messages.AssertionMessages.format_err_msg_equal(
             expected_asmt, actual_asmt))
 def test_asmt_from_template_w_dropdown_comment(self, program,
                                                control_mapped_to_program,
                                                audit, selenium):
     """Check evidence comment could be filled in
 via Assessment dropdown.
 Objects structure:
 Program.
 -> Control mapped to program.
 -> Audit.
   -> Asmt template with evidence comment dropdown.
     -> Autogenerated asmt.
 """
     asmt_template_w_dropdown = rest_facade.create_asmt_template_w_dropdown(
         audit, ["comment"])
     expected_asmt = rest_facade.create_asmt_from_template_rest(
         audit, control_mapped_to_program, asmt_template_w_dropdown)
     dropdown = CustomAttributeDefinitionsFactory().create(
         **expected_asmt.cads_from_template()[0])
     asmt_service = webui_service.AssessmentsService(selenium)
     expected_asmt_comments = [entities_factory.CommentsFactory().create()]
     asmt_service.choose_and_fill_dropdown_lca(
         expected_asmt,
         dropdown.id,
         dropdown.multi_choice_options,
         comment=expected_asmt_comments[0].description)
     expected_asmt_comments = [
         expected_comment.update_attrs(created_at=self.info_service(
         ).get_comment_obj(paren_obj=expected_asmt,
                           comment_description=expected_comment.description
                           ).created_at).repr_ui()
         for expected_comment in expected_asmt_comments
     ]
     expected_asmt.update_attrs(
         updated_at=self.info_service().get_obj(
             obj=expected_asmt).updated_at,
         comments=expected_asmt_comments,
         mapped_objects=[control_mapped_to_program.title],
         status=AssessmentStates.IN_PROGRESS).repr_ui()
     expected_asmt_comments_descriptions = [
         comment.description for comment in expected_asmt_comments
     ]
     actual_asmt = asmt_service.get_obj_from_info_page(obj=expected_asmt)
     actual_asmt_comments_descriptions = [
         comment["description"] for comment in actual_asmt.comments
     ]
     self.general_equal_assert(expected_asmt, actual_asmt, "audit",
                               "comments")
     assert expected_asmt_comments_descriptions \
         == actual_asmt_comments_descriptions
Esempio n. 6
0
 def test_set_comment_for_dropdown_lca(self, program,
                                       control_mapped_to_program,
                                       login_role, obj, obj_role, selenium):
     """Check evidence comment could be filled in
 via Assessment dropdown.
 Objects structure:
 Program.
 -> Control mapped to program.
 -> Audit.
   -> Asmt template with evidence comment dropdown.
     -> Autogenerated asmt.
 """
     # pylint: disable=too-many-locals
     user = rest_facade.create_user_with_role(login_role)
     obj_args = {obj_role: [user]}
     audit = rest_facade.create_audit(program,
                                      **obj_args if obj == "audit" else {})
     comment_text = entities_factory.CommentsFactory().create().description
     asmt_template_w_dropdown = rest_facade.create_asmt_template(
         audit,
         cad_type=AdminWidgetCustomAttributes.DROPDOWN,
         dropdown_types_list=["comment"],
         **obj_args if obj == "assessment" else {})
     expected_asmt = rest_facade.create_asmt_from_template(
         audit, asmt_template_w_dropdown, [control_mapped_to_program])
     dropdown = CustomAttributeDefinitionsFactory().create(
         **expected_asmt.cads_from_template()[0])
     users.set_current_user(user)
     asmt_service = webui_service.AssessmentsService(selenium)
     asmt_service.choose_and_fill_dropdown_lca(expected_asmt,
                                               dropdown,
                                               comment=comment_text)
     rest_asmt_obj = self.info_service().get_obj(obj=expected_asmt)
     expected_asmt.update_attrs(
         custom_attributes={
             dropdown.title.upper(): dropdown.multi_choice_options
         },
         updated_at=rest_asmt_obj.updated_at,
         modified_by=rest_asmt_obj.modified_by,
         mapped_objects=[control_mapped_to_program.title],
         status=object_states.IN_PROGRESS).repr_ui()
     actual_asmt = asmt_service.get_obj_from_info_page(obj=expected_asmt)
     actual_comment_texts = [
         comment["description"] for comment in actual_asmt.comments
     ]
     self.general_equal_assert(expected_asmt, actual_asmt, "audit",
                               "comments")
     assert actual_comment_texts == [comment_text]
Esempio n. 7
0
def submit_obj_for_review(selenium, obj, reviewer):
    """Submit object for review scenario.
  Returns obj with assigned review."""
    review_comment = string_utils.StringMethods.random_string()
    _get_ui_service(selenium, obj).submit_for_review(obj, reviewer.email,
                                                     review_comment)
    obj.update_attrs(review=entities_factory.ReviewsFactory().create(
        reviewers=reviewer))
    exp_comment = entities_factory.CommentsFactory(
    ).create(description=element.Common.REVIEW_COMMENT_PATTERN.format(
        # reviewers emails in review comment message need to be sorted
        # as they are displayed in UI in random order
        emails=', '.join(sorted(obj.review["reviewers"])),
        comment=review_comment))
    exp_comment.created_at = rest_service.ObjectsInfoService().get_comment_obj(
        paren_obj=obj, comment_description=review_comment).created_at
    obj.comments = [exp_comment.repr_ui()]
    return obj