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:
Diffstat (limited to 'spec/controllers/projects/services_controller_spec.rb')
-rw-r--r--spec/controllers/projects/services_controller_spec.rb42
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