1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 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 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167
|
# frozen_string_literal: true
require 'spec_helper'
RSpec.describe 'issue header', :js, feature_category: :team_planning do
let_it_be(:user) { create(:user) }
let_it_be(:group) { create(:group) }
let_it_be(:project) { create(:project, group: group) }
let_it_be(:issue) { create(:issue, project: project) }
let_it_be(:closed_issue) { create(:issue, :closed, project: project) }
let_it_be(:closed_locked_issue) { create(:issue, :closed, :locked, project: project) }
let_it_be(:authored_issue) { create(:issue, project: project, author: user) }
context 'when user has permission to update' do
before do
group.add_owner(user)
sign_in(user)
end
context 'within the issue actions dropdown menu' do
before do
visit project_issue_path(project, issue)
# Click on the ellipsis icon
click_button 'Issue actions'
end
it 'shows the "New related issue", "Report abuse", and "Delete issue" items', :aggregate_failures do
expect(page).to have_link 'New related issue'
expect(page).to have_button 'Report abuse'
expect(page).to have_button 'Delete issue'
expect(page).not_to have_link 'Submit as spam'
end
end
context 'when the issue is open' do
before do
visit project_issue_path(project, issue)
end
it 'has a "Close issue" button' do
expect(page).to have_button 'Close issue'
end
end
context 'when the issue is closed' do
before do
visit project_issue_path(project, closed_issue)
end
it 'has a "Reopen issue" button' do
expect(page).to have_button 'Reopen issue'
end
end
context 'when the issue is closed and locked' do
before do
visit project_issue_path(project, closed_locked_issue)
end
it 'does not have a "Reopen issue" button' do
expect(page).not_to have_button 'Reopen issue'
end
end
context 'when the current user is the issue author' do
before do
visit project_issue_path(project, authored_issue)
end
it 'does not show "Report abuse" button in dropdown' do
click_button 'Issue actions'
expect(page).not_to have_button 'Report abuse'
end
end
end
context 'when user is admin and the project is set up for spam' do
let_it_be(:admin) { create(:admin) }
let_it_be(:user_agent_detail) { create(:user_agent_detail, subject: issue) }
before do
stub_application_setting(akismet_enabled: true)
project.add_maintainer(admin)
sign_in(admin)
end
context 'within the issue actions dropdown menu' do
before do
visit project_issue_path(project, issue)
# Click on the ellipsis icon
click_button 'Issue actions'
end
it 'has "Submit as spam" item' do
expect(page).to have_link 'Submit as spam'
end
end
end
context 'when user does not have permission to update' do
before do
project.add_guest(user)
sign_in(user)
end
context 'within the issue actions dropdown menu' do
before do
visit project_issue_path(project, issue)
# Click on the ellipsis icon
click_button 'Issue actions'
end
it 'only shows the "New related issue" and "Report abuse" items', :aggregate_failures do
expect(page).to have_link 'New related issue'
expect(page).to have_button 'Report abuse'
expect(page).not_to have_link 'Submit as spam'
expect(page).not_to have_button 'Delete issue'
end
end
context 'when the issue is open' do
before do
visit project_issue_path(project, issue)
end
it 'does not have a "Close issue" button' do
expect(page).not_to have_button 'Close issue'
end
end
context 'when the issue is closed' do
before do
visit project_issue_path(project, closed_issue)
end
it 'does not have a "Reopen issue" button' do
expect(page).not_to have_button 'Reopen issue'
end
end
context 'when the issue is closed and locked' do
before do
visit project_issue_path(project, closed_locked_issue)
end
it 'does not have a "Reopen issue" button' do
expect(page).not_to have_button 'Reopen issue'
end
end
context 'when the current user is the issue author' do
before do
visit project_issue_path(project, authored_issue)
end
it 'does not show "Report abuse" button in dropdown' do
click_button 'Issue actions'
expect(page).not_to have_button 'Report abuse'
end
end
end
end
|