group_links_controller_spec.rb 2.61 KB
Newer Older
1 2 3 4
require 'spec_helper'

describe Projects::GroupLinksController do
  let(:group) { create(:group, :private) }
barthc's avatar
barthc committed
5 6
  let(:group2) { create(:group, :private) }
  let(:project) { create(:project, :private, group: group2) }
7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
  let(:user) { create(:user) }

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

  describe '#create' do
    shared_context 'link project to group' do
      before do
        post(:create, namespace_id: project.namespace.to_param,
                      project_id: project.to_param,
                      link_group_id: group.id,
                      link_group_access: ProjectGroupLink.default_access)
      end
    end

    context 'when user has access to group he want to link project to' do
      before { group.add_developer(user) }
      include_context 'link project to group'

      it 'links project with selected group' do
        expect(group.shared_projects).to include project
      end

32
      it 'redirects to project group links page' do
33
        expect(response).to redirect_to(
Jose Ivan Vargas's avatar
Jose Ivan Vargas committed
34
          namespace_project_settings_members_path(project.namespace, project)
35 36 37 38 39 40 41 42 43 44 45 46
        )
      end
    end

    context 'when user doers not have access to group he want to link to' do
      include_context 'link project to group'

      it 'renders 404' do
        expect(response.status).to eq 404
      end

      it 'does not share project with that group' do
47
        expect(group.shared_projects).not_to include project
48 49
      end
    end
barthc's avatar
barthc committed
50 51 52 53 54 55 56 57 58 59 60 61 62 63 64

    context 'when project group id equal link group id' do
      before do
        post(:create, namespace_id: project.namespace.to_param,
                      project_id: project.to_param,
                      link_group_id: group2.id,
                      link_group_access: ProjectGroupLink.default_access)
      end

      it 'does not share project with selected group' do
        expect(group2.shared_projects).not_to include project
      end

      it 'redirects to project group links page' do
        expect(response).to redirect_to(
Jose Ivan Vargas's avatar
Jose Ivan Vargas committed
65
          namespace_project_settings_members_path(project.namespace, project)
barthc's avatar
barthc committed
66 67 68 69 70 71 72 73 74 75 76 77 78
        )
      end
    end

    context 'when link group id is not present' do
      before do
        post(:create, namespace_id: project.namespace.to_param,
                      project_id: project.to_param,
                      link_group_access: ProjectGroupLink.default_access)
      end

      it 'redirects to project group links page' do
        expect(response).to redirect_to(
Jose Ivan Vargas's avatar
Jose Ivan Vargas committed
79
          namespace_project_settings_members_path(project.namespace, project)
barthc's avatar
barthc committed
80 81 82 83
        )
        expect(flash[:alert]).to eq('Please select a group.')
      end
    end
84 85
  end
end