services_controller_spec.rb 2.2 KB
Newer Older
1 2 3 4 5 6 7 8 9 10 11 12 13 14
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)
  end

15 16 17
  shared_examples_for 'services controller' do |referrer|
    before do
      request.env["HTTP_REFERER"] = referrer
18 19
    end

20 21
    describe "#test" do
      context 'success' do
22
        it "redirects and show success message" do
23 24 25 26 27 28 29 30
          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
31
        it "redirects and show failure message" do
32 33 34 35 36
          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
37 38 39
      end
    end
  end
40 41 42 43 44 45 46 47 48 49 50 51

  describe 'referrer defined' do
    it_should_behave_like 'services controller' do
      let!(:referrer) { "/" }
    end
  end

  describe 'referrer undefined' do
    it_should_behave_like 'services controller' do
      let!(:referrer) { nil }
    end
  end
52 53 54 55 56

  describe 'PUT #update' do
    context 'on successful update' do
      it 'sets the flash' do
        expect(service).to receive(:to_param).and_return('hipchat')
T
Tiago Botelho 已提交
57
        expect(service).to receive(:event_names).and_return(HipchatService.event_names)
58 59 60 61 62 63 64 65 66 67 68

        put :update,
          namespace_id: project.namespace.id,
          project_id: project.id,
          id: service.id,
          service: { active: false }

        expect(flash[:notice]).to eq 'Successfully updated.'
      end
    end
  end
69
end