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

3
feature 'Milestone' do
F
Felipe Artur 已提交
4
  let(:group) { create(:group, :public) }
5
  let(:project) { create(:project, :public, namespace: group) }
6 7 8
  let(:user)   { create(:user) }

  before do
F
Felipe Artur 已提交
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)
V
Valery Sizov 已提交
17

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

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

      expect(find('.alert-success')).to have_content('Assign some issues to this milestone.')
P
Pedro Moreira da Silva 已提交
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

F
Felipe Artur 已提交
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

F
Felipe Artur 已提交
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