diff options
author | GitLab Bot <gitlab-bot@gitlab.com> | 2022-09-15 21:12:27 +0000 |
---|---|---|
committer | GitLab Bot <gitlab-bot@gitlab.com> | 2022-09-15 21:12:27 +0000 |
commit | d657831613232fb95226c076343cd320c6573886 (patch) | |
tree | 0c33f1bd5a4f11bb8a33d2a8dc4fe6c3d6c303a9 /spec/controllers/projects/environments_controller_spec.rb | |
parent | 99aa31992d4398d35c9df4854f5fb494984a9e0b (diff) | |
download | gitlab-ce-d657831613232fb95226c076343cd320c6573886.tar.gz |
Add latest changes from gitlab-org/gitlab@master
Diffstat (limited to 'spec/controllers/projects/environments_controller_spec.rb')
-rw-r--r-- | spec/controllers/projects/environments_controller_spec.rb | 125 |
1 files changed, 42 insertions, 83 deletions
diff --git a/spec/controllers/projects/environments_controller_spec.rb b/spec/controllers/projects/environments_controller_spec.rb index 5ed56609265..16a43bae674 100644 --- a/spec/controllers/projects/environments_controller_spec.rb +++ b/spec/controllers/projects/environments_controller_spec.rb @@ -18,8 +18,27 @@ RSpec.describe Projects::EnvironmentsController do sign_in(user) end - # TODO: inline when FF is removed https://gitlab.com/gitlab-org/gitlab/-/issues/372541 - shared_examples 'index examples' do + describe 'GET index' do + context 'when a request for the HTML is made' do + it 'responds with status code 200' do + get :index, params: environment_params + + expect(response).to have_gitlab_http_status(:ok) + end + + it 'expires etag cache to force reload environments list' do + expect_any_instance_of(Gitlab::EtagCaching::Store) + .to receive(:touch).with(project_environments_path(project, format: :json)) + + get :index, params: environment_params + end + + it_behaves_like 'tracking unique visits', :index do + let(:request_params) { environment_params } + let(:target_id) { 'users_visiting_environments_pages' } + end + end + context 'when requesting JSON response for folders' do before do allow_any_instance_of(Environment).to receive(:has_terminals?).and_return(true) @@ -57,16 +76,8 @@ RSpec.describe Projects::EnvironmentsController do it 'handles search option properly' do get :index, params: environment_params(format: :json, search: 'staging/r') - if Feature.enabled?(:environments_search, project) - expect(environments.map { |env| env['name'] } ).to contain_exactly('staging/review-1', 'staging/review-2') - expect(json_response['available_count']).to eq 2 - else - expect(environments.map { |env| env['name'] } ).to contain_exactly('production', - 'staging/review-1', - 'staging/review-2') - expect(json_response['available_count']).to eq 3 - end - + expect(environments.map { |env| env['name'] } ).to contain_exactly('staging/review-1', 'staging/review-2') + expect(json_response['available_count']).to eq 2 expect(json_response['stopped_count']).to eq 1 end @@ -160,40 +171,32 @@ RSpec.describe Projects::EnvironmentsController do end end - describe 'GET index' do - context 'when a request for the HTML is made' do - it 'responds with status code 200' do - get :index, params: environment_params + describe 'GET folder' do + context 'when using default format' do + it 'responds with HTML' do + get :folder, params: { + namespace_id: project.namespace, + project_id: project, + id: 'staging-1.0' + } expect(response).to have_gitlab_http_status(:ok) + expect(response).to render_template 'folder' end - it 'expires etag cache to force reload environments list' do - expect_any_instance_of(Gitlab::EtagCaching::Store) - .to receive(:touch).with(project_environments_path(project, format: :json)) - - get :index, params: environment_params - end + it_behaves_like 'tracking unique visits', :folder do + let(:request_params) do + { + namespace_id: project.namespace, + project_id: project, + id: 'staging-1.0' + } + end - it_behaves_like 'tracking unique visits', :index do - let(:request_params) { environment_params } let(:target_id) { 'users_visiting_environments_pages' } end end - include_examples 'index examples' - - context 'when environments_search feature flag is disabled' do - before do - stub_feature_flags(environments_search: false) - end - - include_examples 'index examples' - end - end - - # TODO: inline when FF is removed https://gitlab.com/gitlab-org/gitlab/-/issues/372541 - shared_examples 'folder examples' do context 'when using JSON format' do before do create(:environment, project: project, @@ -230,57 +233,13 @@ RSpec.describe Projects::EnvironmentsController do search: 'staging-1.0/z' }, format: :json) - if Feature.enabled?(:environments_search, project) - expect(environments.map { |env| env['name'] } ).to eq(['staging-1.0/zzz']) - expect(json_response['available_count']).to eq 1 - else - expect(environments.map { |env| env['name'] } ).to contain_exactly('staging-1.0/review', - 'staging-1.0/zzz') - expect(json_response['available_count']).to eq 2 - end - + expect(environments.map { |env| env['name'] } ).to eq(['staging-1.0/zzz']) + expect(json_response['available_count']).to eq 1 expect(json_response['stopped_count']).to eq 0 end end end - describe 'GET folder' do - context 'when using default format' do - it 'responds with HTML' do - get :folder, params: { - namespace_id: project.namespace, - project_id: project, - id: 'staging-1.0' - } - - expect(response).to be_ok - expect(response).to render_template 'folder' - end - - it_behaves_like 'tracking unique visits', :folder do - let(:request_params) do - { - namespace_id: project.namespace, - project_id: project, - id: 'staging-1.0' - } - end - - let(:target_id) { 'users_visiting_environments_pages' } - end - end - - include_examples 'folder examples' - - context 'when environments_search feature flag is disabled' do - before do - stub_feature_flags(environments_search: false) - end - - include_examples 'folder examples' - end - end - describe 'GET show' do context 'with valid id' do it 'responds with a status code 200' do |