def test_check_asmt_state_change( self, new_program_rest, new_audit_rest, dynamic_objects_w_factory_params, action, expected_initial_state, expected_final_state, expected_verified, selenium ): """Check Assessment workflow status change to correct state. Preconditions: - Program created via REST API. - Audit created under Program via REST API. - Assessment created and updated under Audit via REST API. """ expected_asmt = dynamic_objects_w_factory_params if expected_initial_state: (rest_service.AssessmentsService(). update_obj(expected_asmt, status=expected_initial_state)) asmts_ui_service = webui_service.AssessmentsService(selenium) getattr(asmts_ui_service, action)(expected_asmt) # 'expected_asmt': updated_at (outdated) expected_asmt = (expected_asmt.update_attrs( title=(element.AssessmentInfoWidget.TITLE_EDITED_PART + expected_asmt.title if "edit" in action else expected_asmt.title), status=expected_final_state.title(), verified=expected_verified, updated_at=self.info_service.get_obj( obj=expected_asmt).updated_at).repr_ui()) actual_asmt = asmts_ui_service.get_obj_from_info_page(expected_asmt) self.general_equal_assert(expected_asmt, actual_asmt)
def test_asmts_gcas_filtering( self, new_program_rest, new_audit_rest, new_cas_for_assessments_rest, new_assessments_rest, operator, selenium ): """Test for checking filtering of Assessment by Global Custom Attributes in audit scope. Preconditions: - Program created via REST API. - Audit created via REST API. - Global Custom Attributes for Assessment created via REST API. - Assessments created via REST API. """ custom_attr_values = ( CustomAttributeDefinitionsFactory().generate_ca_values( list_ca_def_objs=new_cas_for_assessments_rest)) checkbox_id = Representation.filter_objs_by_attrs( objs=new_cas_for_assessments_rest, attribute_type=element.AdminWidgetCustomAttributes.CHECKBOX).id expected_asmt = new_assessments_rest[0] asmts_rest_service = rest_service.AssessmentsService() asmts_rest_service.update_obj( obj=expected_asmt, custom_attributes=custom_attr_values) asmts_rest_service.update_obj( obj=new_assessments_rest[1], custom_attributes={checkbox_id: not custom_attr_values[checkbox_id]}) self._check_assessments_filtration(expected_asmt, custom_attr_values, operator, new_audit_rest, selenium)
def test_asmts_gcas_filtering( self, new_program_rest, new_audit_rest, new_cas_for_assessments_rest, new_assessments_rest, selenium, operator ): """Test for checking filtering of Assessment by Custom Attributes in audit scope. Preconditions: - Program created via REST API. - Audit created via REST API. - Assessment created via REST API. - Global Custom Attributes for Assessment created via REST API. """ custom_attr_values = ( CustomAttributeDefinitionsFactory().generate_ca_values( list_ca_def_objs=new_cas_for_assessments_rest)) expected_asmt = new_assessments_rest[0] (rest_service.AssessmentsService().update_obj( obj=expected_asmt, custom_attributes=custom_attr_values)) filter_exprs = FilterUtils().get_filter_exprs_by_cas( expected_asmt.custom_attribute_definitions, custom_attr_values, operator) # due to 'actual_asmt.custom_attributes = {None: None}' expected_asmt = expected_asmt.repr_ui().update_attrs( custom_attributes={None: None}, status=AssessmentStates.IN_PROGRESS) expected_results = [{"filter": filter_expr, "objs": [expected_asmt]} for filter_expr in filter_exprs] actual_results = [ {"filter": filter_expr, "objs": webui_service.AssessmentsService(selenium). filter_and_get_list_objs_from_tree_view(new_audit_rest, filter_expr)} for filter_expr in filter_exprs] assert expected_results == actual_results, ( messages.AssertionMessages.format_err_msg_equal(expected_results, actual_results))
def test_asmts_gcas_filtering( self, new_program_rest, new_audit_rest, new_cas_for_assessments_rest, new_assessments_rest, operator, selenium ): """Test for checking filtering of Assessment by Custom Attributes in audit scope. Preconditions: - Program created via REST API. - Audit created via REST API. - Assessments created via REST API. - Global Custom Attributes for Assessment created via REST API. - Set revers value of GCA with Checkbox type for second Assessment. """ # pylint: disable=too-many-locals custom_attr_values = ( CustomAttributeDefinitionsFactory().generate_ca_values( list_ca_def_objs=new_cas_for_assessments_rest)) checkbox_id = entity.Entity.filter_objs_by_attrs( objs=new_cas_for_assessments_rest, attribute_type=element.AdminWidgetCustomAttributes.CHECKBOX).id expected_asmt = new_assessments_rest[0] asmts_rest_service = rest_service.AssessmentsService() asmts_rest_service.update_obj( obj=expected_asmt, custom_attributes=custom_attr_values) asmts_rest_service.update_obj( obj=new_assessments_rest[1], custom_attributes={checkbox_id: not custom_attr_values[checkbox_id]}) filter_exprs = FilterUtils().get_filter_exprs_by_cas( expected_asmt.custom_attribute_definitions, custom_attr_values, operator) # 'expected_asmt': updated_at (outdated) # 'actual_asmts': created_at, updated_at, custom_attributes (None) expected_asmt = entity.Entity.extract_objs_wo_excluded_attrs( [expected_asmt.update_attrs( status=AssessmentStates.IN_PROGRESS).repr_ui()], *Representation.tree_view_attrs_to_exclude)[0] expected_results = [{"filter": filter_expr, "objs": [expected_asmt]} for filter_expr in filter_exprs] actual_results = [ {"filter": filter_expr, "objs": entity.Entity.extract_objs_wo_excluded_attrs( webui_service.AssessmentsService( selenium).filter_and_get_list_objs_from_tree_view( new_audit_rest, filter_expr), *("updated_at", "custom_attributes")) } for filter_expr in filter_exprs] assert expected_results == actual_results, ( messages.AssertionMessages.format_err_msg_equal( [{exp_res["filter"]: [exp_obj.title for exp_obj in exp_res["objs"]] } for exp_res in expected_results], [{act_res["filter"]: [act_obj.title for act_obj in act_res["objs"]] } for act_res in actual_results]) + messages.AssertionMessages.format_err_msg_equal( string_utils.convert_list_elements_to_list( [exp_res["objs"] for exp_res in expected_results]), string_utils.convert_list_elements_to_list( [act_res["objs"] for act_res in actual_results])))
def _set_values_for_assessment(assessment, cads, only_checkbox, checkbox_value): """Set CA values for assessment""" checkbox_cad = Representation.filter_objs_by_attrs( objs=cads, attribute_type=element.AdminWidgetCustomAttributes.CHECKBOX) if only_checkbox: cavs = [CustomAttributeDefinitionsFactory.generate_cav( checkbox_cad, checkbox_value)] else: cavs = CustomAttributeDefinitionsFactory.generate_cavs(cads) for cav in cavs: if cav.custom_attribute_id == checkbox_cad.id: cav.attribute_value = checkbox_value rest_service.AssessmentsService().update_obj( obj=assessment, custom_attribute_values=[cav.__dict__ for cav in cavs]) return cavs
def set_values_for_assessment(assessment, only_checkbox, checkbox_value): """Set LCA values for assessment""" custom_attr_definitions = [ CustomAttributeDefinitionsFactory().create(**definition) for definition in assessment.cads_from_template()] checkbox_id = Representation.filter_objs_by_attrs( objs=custom_attr_definitions, attribute_type=element.AdminWidgetCustomAttributes.CHECKBOX).id if only_checkbox: attr_values = {} else: attr_values = CustomAttributeDefinitionsFactory().generate_ca_values( list_ca_def_objs=custom_attr_definitions) attr_values[checkbox_id] = checkbox_value rest_service.AssessmentsService().update_obj( obj=assessment, custom_attributes=attr_values) return attr_values
def test_check_asmt_state_change( self, new_program_rest, new_audit_rest, dynamic_object_w_factory_params, action, expected_initial_state, expected_final_state, selenium ): """Check Assessment workflow status change to correct state. Preconditions: - Program created via REST API. - Audit created under Program via REST API. - Assessment created and updated under Audit via REST API. """ expected_asmt = dynamic_object_w_factory_params if expected_initial_state: (rest_service.AssessmentsService(). update_obj(expected_asmt, status=expected_initial_state)) assessments_service = webui_service.AssessmentsService(selenium) getattr(assessments_service, action)(expected_asmt) actual_asmt = assessments_service.get_obj_from_info_page(expected_asmt) self.general_assert( expected_asmt.update_attrs(status=expected_final_state.title(), title=actual_asmt.title, verified=actual_asmt.verified).repr_ui(), actual_asmt, "updated_at")
def create_asmt(audit, **attrs): """Create an assessment within an audit `audit`""" attrs["audit"] = audit.__dict__ return rest_service.AssessmentsService().create_obj(factory_params=attrs)
def create_assessment(audit, **attrs): """Create an assessment within an audit `audit`""" attrs["audit"] = audit.__dict__ return rest_service.AssessmentsService().create_objs(count=1, **attrs)[0]