Welcome to mirror list, hosted at ThFree Co, Russian Federation.

gitlab.com/gitlab-org/gitlab-foss.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'spec/controllers/projects/environments_controller_spec.rb')
-rw-r--r--spec/controllers/projects/environments_controller_spec.rb126
1 files changed, 112 insertions, 14 deletions
diff --git a/spec/controllers/projects/environments_controller_spec.rb b/spec/controllers/projects/environments_controller_spec.rb
index 1a6edab795d..16a43bae674 100644
--- a/spec/controllers/projects/environments_controller_spec.rb
+++ b/spec/controllers/projects/environments_controller_spec.rb
@@ -32,6 +32,11 @@ RSpec.describe Projects::EnvironmentsController do
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
@@ -68,6 +73,24 @@ RSpec.describe Projects::EnvironmentsController do
expect(json_response['stopped_count']).to eq 1
end
+ it 'handles search option properly' do
+ get :index, params: environment_params(format: :json, search: 'staging/r')
+
+ 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
+
+ it 'ignores search option if is shorter than a minimum' do
+ get :index, params: environment_params(format: :json, search: 'st')
+
+ expect(environments.map { |env| env['name'] } ).to contain_exactly('production',
+ 'staging/review-1',
+ 'staging/review-2')
+ expect(json_response['available_count']).to eq 3
+ expect(json_response['stopped_count']).to eq 1
+ end
+
it 'sets the polling interval header' do
subject
@@ -149,29 +172,43 @@ RSpec.describe Projects::EnvironmentsController do
end
describe 'GET folder' do
- before do
- create(:environment, project: project,
- name: 'staging-1.0/review',
- state: :available)
- create(:environment, project: project,
- name: 'staging-1.0/zzz',
- state: :available)
- end
-
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'
- }
+ namespace_id: project.namespace,
+ project_id: project,
+ id: 'staging-1.0'
+ }
- expect(response).to be_ok
+ expect(response).to have_gitlab_http_status(: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
context 'when using JSON format' do
+ before do
+ create(:environment, project: project,
+ name: 'staging-1.0/review',
+ state: :available)
+ create(:environment, project: project,
+ name: 'staging-1.0/zzz',
+ state: :available)
+ end
+
+ let(:environments) { json_response['environments'] }
+
it 'sorts the subfolders lexicographically' do
get :folder, params: {
namespace_id: project.namespace,
@@ -187,6 +224,19 @@ RSpec.describe Projects::EnvironmentsController do
expect(json_response['environments'][1])
.to include('name' => 'staging-1.0/zzz', 'name_without_type' => 'zzz')
end
+
+ it 'handles search option properly' do
+ get(:folder, params: {
+ namespace_id: project.namespace,
+ project_id: project,
+ id: 'staging-1.0',
+ search: 'staging-1.0/z'
+ }, format: :json)
+
+ 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
@@ -197,6 +247,11 @@ RSpec.describe Projects::EnvironmentsController do
expect(response).to be_ok
end
+
+ it_behaves_like 'tracking unique visits', :show do
+ let(:request_params) { environment_params }
+ let(:target_id) { 'users_visiting_environments_pages' }
+ end
end
context 'with invalid id' do
@@ -210,12 +265,30 @@ RSpec.describe Projects::EnvironmentsController do
end
end
+ describe 'GET new' do
+ it 'responds with a status code 200' do
+ get :new, params: environment_params
+
+ expect(response).to be_ok
+ end
+
+ it_behaves_like 'tracking unique visits', :new do
+ let(:request_params) { environment_params }
+ let(:target_id) { 'users_visiting_environments_pages' }
+ end
+ end
+
describe 'GET edit' do
it 'responds with a status code 200' do
get :edit, params: environment_params
expect(response).to be_ok
end
+
+ it_behaves_like 'tracking unique visits', :edit do
+ let(:request_params) { environment_params }
+ let(:target_id) { 'users_visiting_environments_pages' }
+ end
end
describe 'PATCH #update' do
@@ -230,6 +303,11 @@ RSpec.describe Projects::EnvironmentsController do
expect(response).to have_gitlab_http_status(:ok)
expect(json_response['path']).to eq("/#{project.full_path}/-/environments/#{environment.id}")
end
+
+ it_behaves_like 'tracking unique visits', :update do
+ let(:request_params) { params }
+ let(:target_id) { 'users_visiting_environments_pages' }
+ end
end
context "when environment params are invalid" do
@@ -294,6 +372,11 @@ RSpec.describe Projects::EnvironmentsController do
{ 'redirect_url' =>
project_environment_url(project, environment) })
end
+
+ it_behaves_like 'tracking unique visits', :stop do
+ let(:request_params) { environment_params(format: :json) }
+ let(:target_id) { 'users_visiting_environments_pages' }
+ end
end
context 'when no stop action' do
@@ -321,6 +404,11 @@ RSpec.describe Projects::EnvironmentsController do
it_behaves_like 'successful response for #cancel_auto_stop'
+ it_behaves_like 'tracking unique visits', :cancel_auto_stop do
+ let(:request_params) { environment_params }
+ let(:target_id) { 'users_visiting_environments_pages' }
+ end
+
context 'when user is reporter' do
let(:user) { reporter }
@@ -357,6 +445,11 @@ RSpec.describe Projects::EnvironmentsController do
get :terminal, params: environment_params
end
+
+ it_behaves_like 'tracking unique visits', :terminal do
+ let(:request_params) { environment_params }
+ let(:target_id) { 'users_visiting_environments_pages' }
+ end
end
context 'with invalid id' do
@@ -859,6 +952,11 @@ RSpec.describe Projects::EnvironmentsController do
expect(response).to have_gitlab_http_status(:ok)
expect(json_response['path']).to eq("/#{project.full_path}/-/environments/#{json_response['environment']['id']}")
end
+
+ it_behaves_like 'tracking unique visits', :create do
+ let(:request_params) { params }
+ let(:target_id) { 'users_visiting_environments_pages' }
+ end
end
context "when environment params are invalid" do