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:
authorGitLab Bot <gitlab-bot@gitlab.com>2020-04-07 15:09:34 +0300
committerGitLab Bot <gitlab-bot@gitlab.com>2020-04-07 15:09:34 +0300
commit903ccf7c93eb9490c76857bffe744249cc07de09 (patch)
tree603a3162e91999160e4efc74f351f9405f422d61 /spec/controllers
parent41cb558299b483b44b45351730ee4c0e9fe4ca2c (diff)
Add latest changes from gitlab-org/gitlab@master
Diffstat (limited to 'spec/controllers')
-rw-r--r--spec/controllers/projects/import/jira_controller_spec.rb1
-rw-r--r--spec/controllers/projects/prometheus/metrics_controller_spec.rb106
-rw-r--r--spec/controllers/projects/registry/repositories_controller_spec.rb1
3 files changed, 106 insertions, 2 deletions
diff --git a/spec/controllers/projects/import/jira_controller_spec.rb b/spec/controllers/projects/import/jira_controller_spec.rb
index f692f976bc0..57e0aa098c0 100644
--- a/spec/controllers/projects/import/jira_controller_spec.rb
+++ b/spec/controllers/projects/import/jira_controller_spec.rb
@@ -59,6 +59,7 @@ describe Projects::Import::JiraController do
context 'when feature flag enabled' do
before do
stub_feature_flags(jira_issue_import: true)
+ stub_feature_flags(jira_issue_import_vue: false)
end
context 'when jira service is enabled for the project' do
diff --git a/spec/controllers/projects/prometheus/metrics_controller_spec.rb b/spec/controllers/projects/prometheus/metrics_controller_spec.rb
index 314214ceefb..36f694cda29 100644
--- a/spec/controllers/projects/prometheus/metrics_controller_spec.rb
+++ b/spec/controllers/projects/prometheus/metrics_controller_spec.rb
@@ -3,8 +3,8 @@
require 'spec_helper'
describe Projects::Prometheus::MetricsController do
- let(:user) { create(:user) }
- let(:project) { create(:project) }
+ let_it_be(:user) { create(:user) }
+ let_it_be(:project) { create(:prometheus_project) }
let(:prometheus_adapter) { double('prometheus_adapter', can_query?: true) }
@@ -71,6 +71,8 @@ describe Projects::Prometheus::MetricsController do
end
context 'when prometheus_adapter is disabled' do
+ let(:project) { create(:project) }
+
it 'renders 404' do
get :active_common, params: project_params(format: :json)
@@ -79,6 +81,106 @@ describe Projects::Prometheus::MetricsController do
end
end
+ describe 'POST #validate_query' do
+ before do
+ allow(controller).to receive(:prometheus_adapter).and_return(prometheus_adapter)
+ allow(prometheus_adapter).to receive(:query).with(:validate, query) { validation_result }
+ end
+
+ let(:query) { 'avg(metric)' }
+
+ context 'validation information is ready' do
+ let(:validation_result) { { valid: true } }
+
+ it 'validation data is returned' do
+ post :validate_query, params: project_params(format: :json, query: query)
+
+ expect(json_response).to eq('valid' => true)
+ end
+ end
+
+ context 'validation information is not ready' do
+ let(:validation_result) { nil }
+
+ it 'validation data is returned' do
+ post :validate_query, params: project_params(format: :json, query: query)
+
+ expect(response).to have_gitlab_http_status(:accepted)
+ end
+ end
+ end
+
+ describe 'GET #index' do
+ context 'with custom metric present' do
+ let!(:prometheus_metric) { create(:prometheus_metric, project: project) }
+
+ it 'returns a list of metrics' do
+ get :index, params: project_params(format: :json)
+
+ expect(response).to have_gitlab_http_status(:ok)
+ expect(response).to match_response_schema('prometheus/metrics')
+ end
+ end
+
+ context 'without custom metrics ' do
+ it 'returns an empty json' do
+ get :index, params: project_params(format: :json)
+
+ expect(response).to have_gitlab_http_status(:ok)
+ expect(json_response).to eq({})
+ end
+ end
+ end
+
+ describe 'POST #create' do
+ context 'metric is valid' do
+ let(:valid_metric) { { prometheus_metric: { title: 'title', query: 'query', group: 'business', y_label: 'label', unit: 'u', legend: 'legend' } } }
+
+ it 'shows a success flash message' do
+ post :create, params: project_params(valid_metric)
+
+ expect(flash[:notice]).to include('Metric was successfully added.')
+
+ expect(response).to redirect_to(edit_project_service_path(project, PrometheusService))
+ end
+ end
+
+ context 'metric is invalid' do
+ let(:invalid_metric) { { prometheus_metric: { title: 'title' } } }
+
+ it 'renders new metric page' do
+ post :create, params: project_params(invalid_metric)
+
+ expect(response).to have_gitlab_http_status(:ok)
+ expect(response).to render_template('new')
+ end
+ end
+ end
+
+ describe 'DELETE #destroy' do
+ context 'format html' do
+ let!(:metric) { create(:prometheus_metric, project: project) }
+
+ it 'destroys the metric' do
+ delete :destroy, params: project_params(id: metric.id)
+
+ expect(response).to redirect_to(edit_project_service_path(project, PrometheusService))
+ expect(PrometheusMetric.find_by(id: metric.id)).to be_nil
+ end
+ end
+
+ context 'format json' do
+ let!(:metric) { create(:prometheus_metric, project: project) }
+
+ it 'destroys the metric' do
+ delete :destroy, params: project_params(id: metric.id, format: :json)
+
+ expect(response).to have_gitlab_http_status(:ok)
+ expect(PrometheusMetric.find_by(id: metric.id)).to be_nil
+ end
+ end
+ end
+
describe '#prometheus_adapter' do
before do
allow(controller).to receive(:project).and_return(project)
diff --git a/spec/controllers/projects/registry/repositories_controller_spec.rb b/spec/controllers/projects/registry/repositories_controller_spec.rb
index e68959b6a96..c641a45a216 100644
--- a/spec/controllers/projects/registry/repositories_controller_spec.rb
+++ b/spec/controllers/projects/registry/repositories_controller_spec.rb
@@ -110,6 +110,7 @@ describe Projects::Registry::RepositoriesController do
delete_repository(repository)
+ expect(repository.reload).to be_delete_scheduled
expect(response).to have_gitlab_http_status(:no_content)
end