From 2afd18aa28742a3267742859a88be6912a803874 Mon Sep 17 00:00:00 2001 From: "John L. Villalovos" Date: Sun, 14 Mar 2021 16:21:45 -0700 Subject: [PATCH] chore: remove usage of getattr() Remove usage of getattr(self, "_update_uses_post", False) Instead add it to class and set default value to False. Add a tests that shows it is set to True for the ProjectMergeRequestApprovalManager and ProjectApprovalManager classes. --- gitlab/mixins.py | 3 ++- .../test_project_merge_request_approvals.py | 26 ++++++++++++++++++- 2 files changed, 27 insertions(+), 2 deletions(-) diff --git a/gitlab/mixins.py b/gitlab/mixins.py index fd779044a..29180073c 100644 --- a/gitlab/mixins.py +++ b/gitlab/mixins.py @@ -331,6 +331,7 @@ class UpdateMixin(_RestManagerBase): _parent = Optional[base.RESTObject] _parent_attrs = Dict[str, Any] _path: Optional[str] + _update_uses_post: bool = False gitlab: gitlab.Gitlab def _check_missing_update_attrs(self, data: Dict[str, Any]) -> None: @@ -357,7 +358,7 @@ def _get_update_method( Returns: object: http_put (default) or http_post """ - if getattr(self, "_update_uses_post", False): + if self._update_uses_post: http_method = self.gitlab.http_post else: http_method = self.gitlab.http_put diff --git a/gitlab/tests/objects/test_project_merge_request_approvals.py b/gitlab/tests/objects/test_project_merge_request_approvals.py index 5e9244f9c..a8e31e6fe 100644 --- a/gitlab/tests/objects/test_project_merge_request_approvals.py +++ b/gitlab/tests/objects/test_project_merge_request_approvals.py @@ -2,9 +2,12 @@ Gitlab API: https://docs.gitlab.com/ee/api/merge_request_approvals.html """ +import copy + import pytest import responses -import copy + +import gitlab approval_rule_id = 1 @@ -230,6 +233,17 @@ def resp_snippet(): yield rsps +def test_project_approval_manager_update_uses_post(project, resp_snippet): + """Ensure the + gitlab.v4.objects.merge_request_approvals.ProjectApprovalManager object has + _update_uses_post set to True""" + approvals = project.approvals + assert isinstance( + approvals, gitlab.v4.objects.merge_request_approvals.ProjectApprovalManager + ) + assert approvals._update_uses_post == True + + def test_list_merge_request_approval_rules(project, resp_snippet): approval_rules = project.mergerequests.get(1).approval_rules.list() assert len(approval_rules) == 1 @@ -239,6 +253,11 @@ def test_list_merge_request_approval_rules(project, resp_snippet): def test_update_merge_request_approvals_set_approvers(project, resp_snippet): approvals = project.mergerequests.get(1).approvals + assert isinstance( + approvals, + gitlab.v4.objects.merge_request_approvals.ProjectMergeRequestApprovalManager, + ) + assert approvals._update_uses_post == True response = approvals.set_approvers( updated_approval_rule_approvals_required, approver_ids=updated_approval_rule_user_ids, @@ -254,6 +273,11 @@ def test_update_merge_request_approvals_set_approvers(project, resp_snippet): def test_create_merge_request_approvals_set_approvers(project, resp_snippet): approvals = project.mergerequests.get(1).approvals + assert isinstance( + approvals, + gitlab.v4.objects.merge_request_approvals.ProjectMergeRequestApprovalManager, + ) + assert approvals._update_uses_post == True response = approvals.set_approvers( new_approval_rule_approvals_required, approver_ids=new_approval_rule_user_ids,