From e20686a7600d055e19b556447c1a1d762b67f4b5 Mon Sep 17 00:00:00 2001 From: ievgenii vdovenko Date: Wed, 25 Jun 2025 18:07:58 +0200 Subject: [PATCH] feature: adds test global settings inherited --- .../tests/test_repo_pullrequests.py | 32 ++++++++++++++++--- rhodecode/tests/utils.py | 8 +++++ 2 files changed, 36 insertions(+), 4 deletions(-) diff --git a/rhodecode/apps/repository/tests/test_repo_pullrequests.py b/rhodecode/apps/repository/tests/test_repo_pullrequests.py index 499fc5a6..fdceb5ac 100644 --- a/rhodecode/apps/repository/tests/test_repo_pullrequests.py +++ b/rhodecode/apps/repository/tests/test_repo_pullrequests.py @@ -17,12 +17,11 @@ # and proprietary license terms, please see https://rhodecode.com/licenses/ import logging import os -from typing import List, Tuple import mock import pytest +from mock.mock import patch, MagicMock -import rhodecode from rhodecode.lib import helpers as h from rhodecode.lib.vcs.backends.base import MergeResponse, MergeFailureReason, Reference from rhodecode.lib.vcs.nodes import FileNode @@ -38,6 +37,7 @@ from rhodecode.model.db import ( ) from rhodecode.model.meta import Session from rhodecode.model.pull_request import PullRequestModel +from rhodecode.model.settings import VcsSettingsModel from rhodecode.model.user import UserModel from rhodecode.model.comment import CommentsModel from rhodecode.tests import ( @@ -864,8 +864,32 @@ class TestPullrequestsView(object): assert_response = response.assert_response() assert_response.one_element_exists("#close_branch_before_merging") + @pytest.mark.parametrize( + "global_close_branch_before_merging_value", + [ + (False,), + (True,), + ], + ) + def test_new_pull_request_view_close_branch_before_merging_setting_inherit_global_settings( + self, backend, pr_util, xhr_header, baseapp, global_close_branch_before_merging_value + ): + with temporary_settings(baseapp, **{"rhodecode.edition_id": "EE"}): + with patch.object(VcsSettingsModel, "get_repo_settings_inherited") as repo_settings_inherited: + settings_mock = MagicMock() + settings_mock.get.return_value = global_close_branch_before_merging_value + repo_settings_inherited.return_value = settings_mock + + response = self.app.get(route_path("pullrequest_new", repo_name=backend.repo_name), status=200) + + assert_response = response.assert_response() + if global_close_branch_before_merging_value: + assert_response.element_contain_attribute("#close_branch_before_merging", "checked", "checked") + else: + assert_response.element_contain_no_attribute("#close_branch_before_merging", "checked") + def test_new_pull_request_view_close_branch_before_merging_setting_not_present_for_ce( - self, backend, pr_util, xhr_header, baseapp + self, backend, pr_util, xhr_header ): response = self.app.get(route_path("pullrequest_new", repo_name=backend.repo_name), status=200) @@ -890,7 +914,7 @@ class TestPullrequestsView(object): assert_response.one_element_exists("#close_branch_before_merging") def test_show_pull_request_view_close_branch_before_merging_setting_not_present_for_ce( - self, backend, pr_util, xhr_header, baseapp + self, backend, pr_util, xhr_header ): pull_request = pr_util.create_pull_request(mergeable=True, enable_notifications=False) diff --git a/rhodecode/tests/utils.py b/rhodecode/tests/utils.py index 684d1e9d..6ad0fb33 100644 --- a/rhodecode/tests/utils.py +++ b/rhodecode/tests/utils.py @@ -284,6 +284,14 @@ class AssertResponse(object): element = self.get_element(css_selector) assert expected_content in element.text_content() + def element_contain_attribute(self, css_selector, attr_name, attr_value): + element = self.get_element(css_selector) + assert element.attrib.get(attr_name) == attr_value + + def element_contain_no_attribute(self, css_selector, attr_name): + element = self.get_element(css_selector) + assert not element.attrib.get(attr_name) + def element_value_contains(self, css_selector, expected_content): element = self.get_element(css_selector) assert expected_content in element.value