filter_by_milestone_spec.rb 2.4 KB
Newer Older
1
require 'rails_helper'
2

3
feature 'Issue filtering by Milestone', feature: true do
4 5 6
  let(:project)   { create(:project, :public) }
  let(:milestone) { create(:milestone, project: project) }

7
  scenario 'filters by no Milestone', js: true do
8
    create(:issue, project: project)
9
    create(:issue, project: project, milestone: milestone)
10

11
    visit_issues(project)
12
    filter_by_milestone(Milestone::None.title)
13

P
Phil Hughes 已提交
14
    expect(page).to have_css('.issue', count: 1)
15 16
  end

17
  context 'filters by upcoming milestone', js: true do
18
    it 'does not show issues with no expiry' do
19 20 21 22 23 24
      create(:issue, project: project)
      create(:issue, project: project, milestone: milestone)

      visit_issues(project)
      filter_by_milestone(Milestone::Upcoming.title)

P
Phil Hughes 已提交
25
      expect(page).to have_css('.issue', count: 0)
26 27
    end

28
    it 'shows issues in future' do
29 30 31 32 33 34 35
      milestone = create(:milestone, project: project, due_date: Date.tomorrow)
      create(:issue, project: project)
      create(:issue, project: project, milestone: milestone)

      visit_issues(project)
      filter_by_milestone(Milestone::Upcoming.title)

P
Phil Hughes 已提交
36
      expect(page).to have_css('.issue', count: 1)
37 38
    end

39
    it 'does not show issues in past' do
40 41 42 43 44 45 46
      milestone = create(:milestone, project: project, due_date: Date.yesterday)
      create(:issue, project: project)
      create(:issue, project: project, milestone: milestone)

      visit_issues(project)
      filter_by_milestone(Milestone::Upcoming.title)

P
Phil Hughes 已提交
47
      expect(page).to have_css('.issue', count: 0)
48 49 50
    end
  end

51
  scenario 'filters by a specific Milestone', js: true do
52
    create(:issue, project: project, milestone: milestone)
53
    create(:issue, project: project)
54

55
    visit_issues(project)
56 57
    filter_by_milestone(milestone.title)

P
Phil Hughes 已提交
58
    expect(page).to have_css('.issue', count: 1)
59 60
  end

61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76
  context 'when milestone has single quotes in title' do
    background do
      milestone.update(name: "rock 'n' roll")
    end

    scenario 'filters by a specific Milestone', js: true do
      create(:issue, project: project, milestone: milestone)
      create(:issue, project: project)

      visit_issues(project)
      filter_by_milestone(milestone.title)

      expect(page).to have_css('.issue', count: 1)
    end
  end

77
  def visit_issues(project)
78 79 80 81
    visit namespace_project_issues_path(project.namespace, project)
  end

  def filter_by_milestone(title)
P
Phil Hughes 已提交
82
    find(".js-milestone-select").click
A
Alfredo Sumaran 已提交
83
    find(".milestone-filter .dropdown-content a", text: title).click
84 85
  end
end