def assert_objs_diff_corresponds_to_proposal(self, obj, proposal): """Check if objs difference corresponds to the proposal.""" self.open_obj_change_proposals_tab(obj).click_review_apply_btn( proposal) comparison_window = apply_decline_proposal.CompareApplyDeclineModal() comparison_window.modal.wait_until(lambda e: e.exists) obj_name = objects.get_plural(obj.type) service_cls = factory.get_cls_webui_service(obj_name)(self._driver) current_obj = service_cls.build_obj_from_page( comparison_window.curr_version_obj_root_elem.wait_until( lambda e: e.exists)) obj_after_proposal = service_cls.build_obj_from_page( comparison_window.proposal_version_obj_root_elem.wait_until( lambda e: e.exists)) actual_proposal = entities_factory.ProposalsFactory().create() proposal_obj_dict = obj_after_proposal.__dict__ current_obj_dict = current_obj.__dict__ actual_proposal.changes = [] for key in obj_after_proposal.__dict__.keys(): if proposal_obj_dict[key] != current_obj_dict[key]: actual_proposal.changes.append({ "obj_attr_type": key.title(), "cur_value": current_obj_dict[key], "proposed_value": proposal_obj_dict[key] }) actual_proposal.author = comparison_window.get_proposal_version_author( ) actual_proposal.datetime = ( comparison_window.get_proposal_version_datetime()) comparison_window.click_cancel_btn() assert actual_proposal == proposal
def create_proposal(self, obj): """Create a proposal for an obj.""" obj_info_page = factory.get_cls_webui_service(objects.get_plural( obj.type))(self._driver).open_info_page_of_obj(obj) obj_info_page.click_propose_changes() proposal_factory = entities_factory.ProposalsFactory() proposal = proposal_factory.create() proposed_description = proposal_factory.generate_string("Proposal") proposal_modal = object_modal.BaseObjectModal(self._driver) proposal_modal.set_description(proposed_description) proposal_modal.click_propose() proposal.changes = [{"obj_attr_type": "Description", "cur_value": obj.description, "proposed_value": proposed_description}] return proposal