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

3
feature 'Milestone' do
Felipe Artur's avatar
Felipe Artur committed
4
  let(:group) { create(:group, :public) }
5
  let(:project) { create(: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 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84

  feature 'Open a milestone' do
    scenario 'shows total issue time spent correctly when no time has been logged' do
      milestone = create(:milestone, project: project, title: 8.7)

      visit project_milestone_path(project, milestone)

      page.within('.block.time_spent') do
        expect(page).to have_content 'No time spent'
        expect(page).to have_content 'None'
      end
    end

    scenario 'shows total issue time spent' do
      milestone = create(:milestone, project: project, title: 8.7)
      issue1 = create(:issue, project: project, milestone: milestone)
      issue2 = create(:issue, project: project, milestone: milestone)
85
      issue1.spend_time(duration: 3600, user_id: user.id)
86
      issue1.save!
87
      issue2.spend_time(duration: 7200, user_id: user.id)
88 89 90 91 92 93 94 95 96
      issue2.save!

      visit project_milestone_path(project, milestone)

      page.within('.block.time_spent') do
        expect(page).to have_content '3h'
      end
    end
  end
97
end