BigW Consortium Gitlab

milestones.rb 3.88 KB
Newer Older
1 2 3 4 5 6 7
class Spinach::Features::GroupMilestones < Spinach::FeatureSteps
  include SharedAuthentication
  include SharedPaths
  include SharedGroup
  include SharedUser

  step 'I click on group milestones' do
8
    visit group_milestones_path('owned')
9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
  end

  step 'I should see group milestones index page has no milestones' do
    expect(page).to have_content('No milestones to show')
  end

  step 'Group has projects with milestones' do
    group_milestone
  end

  step 'I should see group milestones index page with milestones' do
    expect(page).to have_content('Version 7.2')
    expect(page).to have_content('GL-113')
    expect(page).to have_link('3 Issues', href: issues_group_path("owned", milestone_title: "Version 7.2"))
    expect(page).to have_link('0 Merge Requests', href: merge_requests_group_path("owned", milestone_title: "GL-113"))
  end

  step 'I click on one group milestone' do
27 28 29
    milestones = Milestone.where(title: 'GL-113')
    @global_milestone = GlobalMilestone.new('GL-113', milestones)

30 31 32 33
    click_link 'GL-113'
  end

  step 'I should see group milestone with descriptions and expiry date' do
Robert Speicher committed
34
    expect(page).to have_content('expires on Aug 20, 2114')
35 36 37 38
  end

  step 'I should see group milestone with all issues and MRs assigned to that milestone' do
    expect(page).to have_content('Milestone GL-113')
39
    expect(page).to have_content('3 issues: 3 open and 0 closed')
40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65
    issue = Milestone.find_by(name: 'GL-113').issues.first
    expect(page).to have_link(issue.title, href: namespace_project_issue_path(issue.project.namespace, issue.project, issue))
  end

  step 'I fill milestone name' do
    fill_in 'milestone_title', with: 'v2.9.0'
  end

  step 'I click new milestone button' do
    click_link "New Milestone"
  end

  step 'I press create mileston button' do
    click_button "Create Milestone"
  end

  step 'milestone in each project should be created' do
    group = Group.find_by(name: 'Owned')
    expect(page).to have_content "Milestone v2.9.0"
    expect(group.projects).to be_present

    group.projects.each do |project|
      expect(page).to have_content project.name
    end
  end

66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86
  step 'I should see the "bug" label' do
    page.within('#tab-issues') do
      expect(page).to have_content 'bug'
    end
  end

  step 'I should see the "feature" label' do
    page.within('#tab-issues') do
      expect(page).to have_content 'bug'
    end
  end

  step 'I should see the project name in the Issue row' do
    page.within('#tab-issues') do
      @global_milestone.projects.each do |project|
        expect(page).to have_content project.name
      end
    end
  end

  step 'I click on the "Labels" tab' do
87
    page.within('.content .nav-links') do
88 89 90 91 92 93 94 95 96 97 98
      page.find(:xpath, "//a[@href='#tab-labels']").click
    end
  end

  step 'I should see the list of labels' do
    page.within('#tab-labels') do
      expect(page).to have_content 'bug'
      expect(page).to have_content 'feature'
    end
  end

99 100 101 102 103 104
  private

  def group_milestone
    group = owned_group

    %w(gitlabhq gitlab-ci cookbook-gitlab).each do |path|
105
      project = create(:empty_project, path: path, group: group)
106
      milestone = create :milestone, title: "Version 7.2", project: project
107 108 109 110

      create(:label, project: project, title: 'bug')
      create(:label, project: project, title: 'feature')

111 112 113 114 115 116
      create :issue,
        project: project,
        assignee: current_user,
        author: current_user,
        milestone: milestone

117 118 119 120 121
      milestone = create :milestone,
        title: "GL-113",
        project: project,
        due_date: '2114-08-20',
        description: 'Lorem Ipsum is simply dummy text'
122

123
      issue = create :issue,
124 125 126 127
        project: project,
        assignee: current_user,
        author: current_user,
        milestone: milestone
128 129 130

      issue.labels << project.labels.find_by(title: 'bug')
      issue.labels << project.labels.find_by(title: 'feature')
131
    end
132 133

    current_user.refresh_authorized_projects
134 135
  end
end