milestone_spec.rb 2.37 KB
Newer Older
1 2
require 'rails_helper'

3
feature 'Milestone' do
Felipe Artur's avatar
Felipe Artur committed
4 5
  let(:group) { create(:group, :public) }
  let(:project) { create(:empty_project, :public, namespace: group) }
6 7 8
  let(:user)   { create(:user) }

  before do
Felipe Artur's avatar
Felipe Artur committed
9
    create(:group_member, group: group, user: user)
10
    project.team << [user, :master]
11
    sign_in(user)
12 13 14
  end

  feature 'Create a milestone' do
15
    scenario 'shows an informative message for a new milestone' do
16
      visit new_project_milestone_path(project)
17

18 19
      page.within '.milestone-form' do
        fill_in "milestone_title", with: '8.7'
20 21
        fill_in "milestone_start_date", with: '2016-11-16'
        fill_in "milestone_due_date", with: '2016-12-16'
22
      end
23

24 25 26
      find('input[name="commit"]').click

      expect(find('.alert-success')).to have_content('Assign some issues to this milestone.')
Pedro Moreira da Silva's avatar
Pedro Moreira da Silva committed
27
      expect(page).to have_content('Nov 16, 2016–Dec 16, 2016')
28 29 30 31
    end
  end

  feature 'Open a milestone with closed issues' do
32
    scenario 'shows an informative message' do
33 34
      milestone = create(:milestone, project: project, title: 8.7)

35
      create(:issue, title: "Bugfix1", project: project, milestone: milestone, state: "closed")
36
      visit project_milestone_path(project, milestone)
37 38 39 40

      expect(find('.alert-success')).to have_content('All issues for this milestone are closed. You may close this milestone now.')
    end
  end
41

Felipe Artur's avatar
Felipe Artur committed
42 43
  feature 'Open a project milestone with an existing title' do
    scenario 'displays validation message when there is a project milestone with same title' do
44 45
      milestone = create(:milestone, project: project, title: 8.7)

46
      visit new_project_milestone_path(project)
47 48 49 50 51
      page.within '.milestone-form' do
        fill_in "milestone_title", with: milestone.title
      end
      find('input[name="commit"]').click

Felipe Artur's avatar
Felipe Artur committed
52 53 54 55 56 57 58 59 60 61 62 63 64 65
      expect(find('.alert-danger')).to have_content('already being used for another group or project milestone.')
    end

    scenario 'displays validation message when there is a group milestone with same title' do
      milestone = create(:milestone, project_id: nil, group: project.group, title: 8.7)

      visit new_group_milestone_path(project.group)

      page.within '.milestone-form' do
        fill_in "milestone_title", with: milestone.title
      end
      find('input[name="commit"]').click

      expect(find('.alert-danger')).to have_content('already being used for another group or project milestone.')
66 67
    end
  end
68
end