summaryrefslogtreecommitdiff
path: root/spec/controllers/projects
diff options
context:
space:
mode:
authorStan Hu <stanhu@gmail.com>2015-08-12 00:40:54 -0700
committerStan Hu <stanhu@gmail.com>2015-08-12 07:31:25 -0700
commit23790570026ce78e3b4cbbf1b2f32ada992c5f40 (patch)
tree01ca42d07aa5d3d7a12d37767a8de3e8e4e55a7d /spec/controllers/projects
parentcb6ad67f52c9e849e0f8ca34b2fff47c585bd816 (diff)
downloadgitlab-ce-23790570026ce78e3b4cbbf1b2f32ada992c5f40.tar.gz
Provide more feedback what went wrong if HipChat service failed test
Issue gitlab-com/support-forum#213
Diffstat (limited to 'spec/controllers/projects')
-rw-r--r--spec/controllers/projects/services_controller_spec.rb35
1 files changed, 35 insertions, 0 deletions
diff --git a/spec/controllers/projects/services_controller_spec.rb b/spec/controllers/projects/services_controller_spec.rb
new file mode 100644
index 00000000000..d4ecd98e12d
--- /dev/null
+++ b/spec/controllers/projects/services_controller_spec.rb
@@ -0,0 +1,35 @@
+require 'spec_helper'
+
+describe Projects::ServicesController do
+ let(:project) { create(:project) }
+ let(:user) { create(:user) }
+ let(:service) { create(:service, project: project) }
+
+ before do
+ sign_in(user)
+ project.team << [user, :master]
+ controller.instance_variable_set(:@project, project)
+ controller.instance_variable_set(:@service, service)
+ request.env["HTTP_REFERER"] = "/"
+ end
+
+ describe "#test" do
+ context 'success' do
+ it "should redirect and show success message" do
+ expect(service).to receive(:test).and_return({ success: true, result: 'done' })
+ get :test, namespace_id: project.namespace.id, project_id: project.id, id: service.id, format: :html
+ expect(response.status).to redirect_to('/')
+ expect(flash[:notice]).to eq('We sent a request to the provided URL')
+ end
+ end
+
+ context 'failure' do
+ it "should redirect and show failure message" do
+ expect(service).to receive(:test).and_return({ success: false, result: 'Bad test' })
+ get :test, namespace_id: project.namespace.id, project_id: project.id, id: service.id, format: :html
+ expect(response.status).to redirect_to('/')
+ expect(flash[:alert]).to eq('We tried to send a request to the provided URL but an error occurred: Bad test')
+ end
+ end
+ end
+end