mattermosts_controller_spec.rb 1.57 KB
Newer Older
Z.J. van de Weg's avatar
Z.J. van de Weg committed
1
2
3
4
5
6
7
8
9
10
11
12
13
require 'spec_helper'

describe Projects::MattermostsController do
  let!(:project) { create(:empty_project) }
  let!(:user) { create(:user) }

  before do
    project.team << [user, :master]
    sign_in(user)
  end

  describe 'GET #new' do
    before do
14
15
      allow_any_instance_of(MattermostSlashCommandsService)
        .to receive(:list_teams).and_return([])
Z.J. van de Weg's avatar
Z.J. van de Weg committed
16
    end
Z.J. van de Weg's avatar
Z.J. van de Weg committed
17

Z.J. van de Weg's avatar
Z.J. van de Weg committed
18
    it 'accepts the request' do
Z.J. van de Weg's avatar
Z.J. van de Weg committed
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
      get(:new,
          namespace_id: project.namespace.to_param,
          project_id: project.to_param)

      expect(response).to have_http_status(200)
    end
  end

  describe 'POST #create' do
    let(:mattermost_params) { { trigger: 'http://localhost:3000/trigger', team_id: 'abc' } }

    subject do
      post(:create,
           namespace_id: project.namespace.to_param,
           project_id: project.to_param,
           mattermost: mattermost_params)
    end

    context 'no request can be made to mattermost' do
      it 'shows the error' do
Z.J. van de Weg's avatar
Z.J. van de Weg committed
39
40
41
        allow_any_instance_of(MattermostSlashCommandsService).to receive(:configure).and_return([false, "error message"])

        expect(subject).to redirect_to(new_namespace_project_mattermost_url(project.namespace, project))
Z.J. van de Weg's avatar
Z.J. van de Weg committed
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
      end
    end

    context 'the request is succesull' do
      before do
        allow_any_instance_of(Mattermost::Command).to receive(:create).and_return('token')
      end

      it 'redirects to the new page' do
        subject
        service = project.services.last

        expect(subject).to redirect_to(edit_namespace_project_service_url(project.namespace, project, service))
      end
    end
  end
end