def _root(self): """Returns root element (including title, 3bbs).""" if self.is_info_page: return self._browser.element(class_name="widget", id="info") if apply_decline_proposal.CompareApplyDeclineModal().modal.exists: return self.root_element return self._browser.element(class_name="sticky-info-panel")
def apply_proposal(self, obj, proposal): """Apply an obj proposal.""" self.open_obj_change_proposals_tab(obj).click_apply_btn(proposal) apply_decline_proposal.CompareApplyDeclineModal().click_apply_btn() proposal.status = object_states.APPLIED proposal.changes[0]["cur_value"] = proposal.changes[0][ "proposed_value"]
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 is_info_page(self): """Returns whether the page is info page.""" return (self.get_current_url_fragment() == self._url_fragment() and not apply_decline_proposal.CompareApplyDeclineModal().modal.exists)
def decline_proposal(self, obj, proposal): """Decline an obj proposal.""" self.open_obj_change_proposals_tab(obj).click_review_apply_btn( proposal) apply_decline_proposal.CompareApplyDeclineModal().click_decline_btn() proposal.status = object_states.DECLINED