diff options
Diffstat (limited to 'spec/controllers/projects/services_controller_spec.rb')
-rw-r--r-- | spec/controllers/projects/services_controller_spec.rb | 42 |
1 files changed, 34 insertions, 8 deletions
diff --git a/spec/controllers/projects/services_controller_spec.rb b/spec/controllers/projects/services_controller_spec.rb index c669119fa4e..04c74dfdefe 100644 --- a/spec/controllers/projects/services_controller_spec.rb +++ b/spec/controllers/projects/services_controller_spec.rb @@ -2,7 +2,7 @@ require 'spec_helper' -describe Projects::ServicesController do +RSpec.describe Projects::ServicesController do let(:project) { create(:project, :repository) } let(:user) { create(:user) } let(:service) { create(:jira_service, project: project) } @@ -134,24 +134,50 @@ describe Projects::ServicesController do describe 'PUT #update' do describe 'as HTML' do let(:service_params) { { active: true } } + let(:params) { project_params(service: service_params) } + + let(:message) { 'Jira activated.' } + let(:redirect_url) { project_settings_integrations_path(project) } before do - put :update, params: project_params(service: service_params) + put :update, params: params + end + + shared_examples 'service update' do + it 'redirects to the correct url with a flash message' do + expect(response).to redirect_to(redirect_url) + expect(flash[:notice]).to eq(message) + end end context 'when param `active` is set to true' do - it 'activates the service and redirects to integrations paths' do - expect(response).to redirect_to(project_settings_integrations_path(project)) - expect(flash[:notice]).to eq 'Jira activated.' + let(:params) { project_params(service: service_params, redirect_to: redirect) } + + context 'when redirect_to param is present' do + let(:redirect) { '/redirect_here' } + let(:redirect_url) { redirect } + + it_behaves_like 'service update' + end + + context 'when redirect_to is an external domain' do + let(:redirect) { 'http://examle.com' } + + it_behaves_like 'service update' + end + + context 'when redirect_to param is an empty string' do + let(:redirect) { '' } + + it_behaves_like 'service update' end end context 'when param `active` is set to false' do let(:service_params) { { active: false } } + let(:message) { 'Jira settings saved, but not activated.' } - it 'does not activate the service but saves the settings' do - expect(flash[:notice]).to eq 'Jira settings saved, but not activated.' - end + it_behaves_like 'service update' end end |