BigW Consortium Gitlab

form_spec.rb 3.72 KB
Newer Older
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
require 'rails_helper'

describe 'New/edit issue', feature: true, js: true do
  let!(:project)   { create(:project) }
  let!(:user)      { create(:user)}
  let!(:milestone) { create(:milestone, project: project) }
  let!(:label)     { create(:label, project: project) }
  let!(:label2)    { create(:label, project: project) }
  let!(:issue)     { create(:issue, project: project, assignee: user, milestone: milestone) }

  before do
    project.team << [user, :master]
    login_as(user)
  end

  context 'new issue' do
    before do
      visit new_namespace_project_issue_path(project.namespace, project)
    end

21
    it 'allows user to create new issue' do
22 23 24 25
      fill_in 'issue_title', with: 'title'
      fill_in 'issue_description', with: 'title'

      click_button 'Assignee'
26 27 28 29 30
      page.within '.dropdown-menu-user' do
        click_link user.name
      end
      expect(find('input[name="issue[assignee_id]"]', visible: false).value).to match(user.id.to_s)
      page.within '.js-assignee-search' do
31 32 33 34
        expect(page).to have_content user.name
      end

      click_button 'Milestone'
35 36 37 38 39
      page.within '.issue-milestone' do
        click_link milestone.title
      end
      expect(find('input[name="issue[milestone_id]"]', visible: false).value).to match(milestone.id.to_s)
      page.within '.js-milestone-select' do
40 41 42 43
        expect(page).to have_content milestone.title
      end

      click_button 'Labels'
44 45 46 47 48 49
      page.within '.dropdown-menu-labels' do
        click_link label.title
        click_link label2.title
      end
      page.within '.js-label-select' do
        expect(page).to have_content label.title
50
      end
51 52
      expect(page.all('input[name="issue[label_ids][]"]', visible: false)[1].value).to match(label.id.to_s)
      expect(page.all('input[name="issue[label_ids][]"]', visible: false)[2].value).to match(label2.id.to_s)
53 54 55

      click_button 'Submit issue'

56 57 58 59 60 61 62 63 64 65 66 67 68
      page.within '.issuable-sidebar' do
        page.within '.assignee' do
          expect(page).to have_content user.name
        end

        page.within '.milestone' do
          expect(page).to have_content milestone.title
        end

        page.within '.labels' do
          expect(page).to have_content label.title
          expect(page).to have_content label2.title
        end
69 70 71 72 73 74 75 76 77
      end
    end
  end

  context 'edit issue' do
    before do
      visit edit_namespace_project_issue_path(project.namespace, project, issue)
    end

78
    it 'allows user to update issue' do
79 80
      expect(find('input[name="issue[assignee_id]"]', visible: false).value).to match(user.id.to_s)
      expect(find('input[name="issue[milestone_id]"]', visible: false).value).to match(milestone.id.to_s)
81

82 83 84
      page.within '.js-user-search' do
        expect(page).to have_content user.name
      end
85

86 87
      page.within '.js-milestone-select' do
        expect(page).to have_content milestone.title
88 89
      end

90 91 92 93 94 95 96 97 98 99 100
      click_button 'Labels'
      page.within '.dropdown-menu-labels' do
        click_link label.title
        click_link label2.title
      end
      page.within '.js-label-select' do
        expect(page).to have_content label.title
      end
      expect(page.all('input[name="issue[label_ids][]"]', visible: false)[1].value).to match(label.id.to_s)
      expect(page.all('input[name="issue[label_ids][]"]', visible: false)[2].value).to match(label2.id.to_s)

101 102
      click_button 'Save changes'

103 104 105 106 107 108 109 110 111 112 113 114 115
      page.within '.issuable-sidebar' do
        page.within '.assignee' do
          expect(page).to have_content user.name
        end

        page.within '.milestone' do
          expect(page).to have_content milestone.title
        end

        page.within '.labels' do
          expect(page).to have_content label.title
          expect(page).to have_content label2.title
        end
116 117 118 119
      end
    end
  end
end