milestones_controller_spec.rb 1.92 KB
Newer Older
1 2 3
require 'spec_helper'

describe Dashboard::MilestonesController do
4
  let(:project) { create(:project) }
5
  let(:group) { create(:group) }
6
  let(:public_group) { create(:group, :public) }
7
  let(:user) { create(:user) }
8
  let(:project_milestone) { create(:milestone, project: project) }
9
  let(:group_milestone) { create(:milestone, group: group) }
10
  let!(:public_milestone) { create(:milestone, group: public_group) }
11 12 13 14 15 16 17
  let(:milestone) do
    DashboardMilestone.build(
      [project],
      project_milestone.title
    )
  end
  let(:issue) { create(:issue, project: project, milestone: project_milestone) }
18 19
  let(:group_issue) { create(:issue, milestone: group_milestone) }

20
  let!(:label) { create(:label, project: project, title: 'Issue Label', issues: [issue]) }
21
  let!(:group_label) { create(:group_label, group: group, title: 'Group Issue Label', issues: [group_issue]) }
22 23 24 25 26
  let!(:merge_request) { create(:merge_request, source_project: project, target_project: project, milestone: project_milestone) }
  let(:milestone_path) { dashboard_milestone_path(milestone.safe_title, title: milestone.title) }

  before do
    sign_in(user)
27
    project.add_maintainer(user)
28
    group.add_developer(user)
29 30 31 32 33 34 35 36 37 38 39 40 41 42
  end

  it_behaves_like 'milestone tabs'

  describe "#show" do
    render_views

    def view_milestone
      get :show, id: milestone.safe_title, title: milestone.title
    end

    it 'shows milestone page' do
      view_milestone

43
      expect(response).to have_gitlab_http_status(200)
44 45
    end
  end
46 47

  describe "#index" do
48
    it 'returns group and project milestones to which the user belongs' do
49 50 51 52
      get :index, format: :json

      expect(response).to have_gitlab_http_status(200)
      expect(json_response.size).to eq(2)
53 54
      expect(json_response.map { |i| i["first_milestone"]["id"] }).to match_array([group_milestone.id, project_milestone.id])
      expect(json_response.map { |i| i["group_name"] }.compact).to match_array(group.name)
55 56
    end
  end
57
end