summaryrefslogtreecommitdiff
path: root/spec/controllers
diff options
context:
space:
mode:
authorGitLab Bot <gitlab-bot@gitlab.com>2019-12-16 21:08:00 +0000
committerGitLab Bot <gitlab-bot@gitlab.com>2019-12-16 21:08:00 +0000
commit69d6d3ca2013e97cfd2d89449669ea7bf475f4e9 (patch)
tree2cc4227ebfc52b7603691f06b0b8e09e030e8428 /spec/controllers
parent01fdcf49b1553c22ae116fe96cedd7b91d02225c (diff)
downloadgitlab-ce-69d6d3ca2013e97cfd2d89449669ea7bf475f4e9.tar.gz
Add latest changes from gitlab-org/gitlab@master
Diffstat (limited to 'spec/controllers')
-rw-r--r--spec/controllers/projects/environments/sample_metrics_controller_spec.rb64
1 files changed, 64 insertions, 0 deletions
diff --git a/spec/controllers/projects/environments/sample_metrics_controller_spec.rb b/spec/controllers/projects/environments/sample_metrics_controller_spec.rb
new file mode 100644
index 00000000000..4faa3ecb567
--- /dev/null
+++ b/spec/controllers/projects/environments/sample_metrics_controller_spec.rb
@@ -0,0 +1,64 @@
+# frozen_string_literal: true
+
+require 'spec_helper'
+
+describe Projects::Environments::SampleMetricsController do
+ include StubENV
+
+ let_it_be(:project) { create(:project) }
+ let_it_be(:environment) { create(:environment, project: project) }
+ let_it_be(:user) { create(:user) }
+
+ before(:context) do
+ RSpec::Mocks.with_temporary_scope do
+ stub_env('USE_SAMPLE_METRICS', 'true')
+ Rails.application.reload_routes!
+ end
+ end
+
+ after(:context) do
+ Rails.application.reload_routes!
+ end
+
+ before do
+ project.add_reporter(user)
+ sign_in(user)
+ end
+
+ describe 'GET #query' do
+ context 'when the file is not found' do
+ before do
+ get :query, params: environment_params
+ end
+
+ it 'returns a 404' do
+ expect(response).to have_gitlab_http_status(:not_found)
+ end
+ end
+
+ context 'when the sample data is found' do
+ before do
+ allow_next_instance_of(Metrics::SampleMetricsService) do |service|
+ allow(service).to receive(:query).and_return([])
+ end
+ get :query, params: environment_params
+ end
+
+ it 'returns JSON with a message and a 200 status code' do
+ expect(json_response.keys).to contain_exactly('status', 'data')
+ expect(response).to have_gitlab_http_status(:ok)
+ end
+ end
+ end
+
+ private
+
+ def environment_params(params = {})
+ {
+ id: environment.id.to_s,
+ namespace_id: project.namespace.full_path,
+ project_id: project.name,
+ identifier: 'sample_metric_query_result'
+ }.merge(params)
+ end
+end