From 903ccf7c93eb9490c76857bffe744249cc07de09 Mon Sep 17 00:00:00 2001 From: GitLab Bot Date: Tue, 7 Apr 2020 12:09:34 +0000 Subject: Add latest changes from gitlab-org/gitlab@master --- .../projects/import/jira_controller_spec.rb | 1 + .../projects/prometheus/metrics_controller_spec.rb | 106 ++++++++++++++++++++- .../registry/repositories_controller_spec.rb | 1 + 3 files changed, 106 insertions(+), 2 deletions(-) (limited to 'spec/controllers/projects') 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 -- cgit v1.2.1