diff options
author | GitLab Bot <gitlab-bot@gitlab.com> | 2022-10-20 12:40:42 +0300 |
---|---|---|
committer | GitLab Bot <gitlab-bot@gitlab.com> | 2022-10-20 12:40:42 +0300 |
commit | ee664acb356f8123f4f6b00b73c1e1cf0866c7fb (patch) | |
tree | f8479f94a28f66654c6a4f6fb99bad6b4e86a40e /spec/controllers/projects/protected_branches_controller_spec.rb | |
parent | 62f7d5c5b69180e82ae8196b7b429eeffc8e7b4f (diff) |
Add latest changes from gitlab-org/gitlab@15-5-stable-eev15.5.0-rc42
Diffstat (limited to 'spec/controllers/projects/protected_branches_controller_spec.rb')
-rw-r--r-- | spec/controllers/projects/protected_branches_controller_spec.rb | 46 |
1 files changed, 38 insertions, 8 deletions
diff --git a/spec/controllers/projects/protected_branches_controller_spec.rb b/spec/controllers/projects/protected_branches_controller_spec.rb index 4996bd90005..14728618633 100644 --- a/spec/controllers/projects/protected_branches_controller_spec.rb +++ b/spec/controllers/projects/protected_branches_controller_spec.rb @@ -4,26 +4,23 @@ require('spec_helper') RSpec.describe Projects::ProtectedBranchesController do let_it_be_with_reload(:project) { create(:project, :repository) } - let_it_be(:maintainer) { create(:user) } + let_it_be_with_reload(:empty_project) { create(:project, :empty_repo) } + let_it_be(:maintainer) { create(:user, maintainer_projects: [project, empty_project]) } let(:protected_branch) { create(:protected_branch, project: project) } let(:project_params) { { namespace_id: project.namespace.to_param, project_id: project } } let(:base_params) { project_params.merge(id: protected_branch.id) } let(:user) { maintainer } - before_all do - project.add_maintainer(maintainer) - end - before do sign_in(user) end describe "GET #index" do - let(:project) { create(:project_empty_repo, :public) } + it 'redirects to repository settings' do + get(:index, params: { namespace_id: empty_project.namespace.to_param, project_id: empty_project }) - it "redirects empty repo to projects page" do - get(:index, params: { namespace_id: project.namespace.to_param, project_id: project }) + expect(response).to redirect_to(project_settings_repository_path(empty_project)) end end @@ -42,6 +39,18 @@ RSpec.describe Projects::ProtectedBranchesController do end.to change(ProtectedBranch, :count).by(1) end + context 'when repository is empty' do + let(:project) { empty_project } + + it 'creates the protected branch rule' do + expect do + post(:create, params: project_params.merge(protected_branch: create_params)) + end.to change(ProtectedBranch, :count).by(1) + + expect(response).to have_gitlab_http_status(:found) + end + end + context 'when a policy restricts rule creation' do it "prevents creation of the protected branch rule" do disallow(:create_protected_branch, an_instance_of(ProtectedBranch)) @@ -63,6 +72,17 @@ RSpec.describe Projects::ProtectedBranchesController do expect(json_response["name"]).to eq('new_name') end + context 'when repository is empty' do + let(:project) { empty_project } + + it 'updates the protected branch rule' do + put(:update, params: base_params.merge(protected_branch: update_params)) + + expect(protected_branch.reload.name).to eq('new_name') + expect(json_response["name"]).to eq('new_name') + end + end + context 'when a policy restricts rule update' do it "prevents update of the protected branch rule" do disallow(:update_protected_branch, protected_branch) @@ -83,6 +103,16 @@ RSpec.describe Projects::ProtectedBranchesController do expect { ProtectedBranch.find(protected_branch.id) }.to raise_error(ActiveRecord::RecordNotFound) end + context 'when repository is empty' do + let(:project) { empty_project } + + it 'deletes the protected branch rule' do + delete(:destroy, params: base_params) + + expect { ProtectedBranch.find(protected_branch.id) }.to raise_error(ActiveRecord::RecordNotFound) + end + end + context 'when a policy restricts rule deletion' do it "prevents deletion of the protected branch rule" do disallow(:destroy_protected_branch, protected_branch) |