diff options
author | GitLab Bot <gitlab-bot@gitlab.com> | 2019-10-04 12:06:35 +0300 |
---|---|---|
committer | GitLab Bot <gitlab-bot@gitlab.com> | 2019-10-04 12:06:35 +0300 |
commit | 1f1bdf54e1974f89f3a6ba734ec2c42552e90639 (patch) | |
tree | ee27c4230cf0aa11652cfcb4f4c662bcf758c90b /spec/controllers/concerns/metrics_dashboard_spec.rb | |
parent | 535d167d40638105527bc6c9a86f33d2ffd62743 (diff) |
Add latest changes from gitlab-org/gitlab@master
Diffstat (limited to 'spec/controllers/concerns/metrics_dashboard_spec.rb')
-rw-r--r-- | spec/controllers/concerns/metrics_dashboard_spec.rb | 58 |
1 files changed, 58 insertions, 0 deletions
diff --git a/spec/controllers/concerns/metrics_dashboard_spec.rb b/spec/controllers/concerns/metrics_dashboard_spec.rb new file mode 100644 index 00000000000..a71e34fd1ca --- /dev/null +++ b/spec/controllers/concerns/metrics_dashboard_spec.rb @@ -0,0 +1,58 @@ +# frozen_string_literal: true + +require 'spec_helper' + +describe MetricsDashboard do + describe 'GET #metrics_dashboard' do + let_it_be(:user) { create(:user) } + let_it_be(:project) { create(:project, :repository) } + let_it_be(:environment) { create(:environment, project: project) } + + before do + sign_in(user) + project.add_maintainer(user) + end + + controller(::ApplicationController) do + include MetricsDashboard # rubocop:disable RSpec/DescribedClass + end + + let(:json_response) do + routes.draw { get "metrics_dashboard" => "anonymous#metrics_dashboard" } + response = get :metrics_dashboard, format: :json + + JSON.parse(response.parsed_body) + end + + context 'when no parameters are provided' do + it 'returns an error json_response' do + expect(json_response['status']).to eq('error') + end + end + + context 'when params are provided' do + before do + allow(controller).to receive(:project).and_return(project) + allow(controller) + .to receive(:metrics_dashboard_params) + .and_return(environment: environment) + end + + it 'returns the specified dashboard' do + expect(json_response['dashboard']['dashboard']).to eq('Environment metrics') + expect(json_response).not_to have_key('all_dashboards') + end + + context 'when parameters are provided and the list of all dashboards is required' do + before do + allow(controller).to receive(:include_all_dashboards?).and_return(true) + end + + it 'returns a dashboard in addition to the list of dashboards' do + expect(json_response['dashboard']['dashboard']).to eq('Environment metrics') + expect(json_response).to have_key('all_dashboards') + end + end + end + end +end |