summaryrefslogtreecommitdiff
path: root/spec/features/issues/related_issues_spec.rb
diff options
context:
space:
mode:
Diffstat (limited to 'spec/features/issues/related_issues_spec.rb')
-rw-r--r--spec/features/issues/related_issues_spec.rb116
1 files changed, 49 insertions, 67 deletions
diff --git a/spec/features/issues/related_issues_spec.rb b/spec/features/issues/related_issues_spec.rb
index 818e99f2ec9..62127295a7c 100644
--- a/spec/features/issues/related_issues_spec.rb
+++ b/spec/features/issues/related_issues_spec.rb
@@ -3,42 +3,41 @@
require 'spec_helper'
RSpec.describe 'Related issues', :js do
- let(:user) { create(:user) }
- let(:project) { create(:project_empty_repo, :public) }
- let(:project_b) { create(:project_empty_repo, :public) }
- let(:project_unauthorized) { create(:project_empty_repo, :public) }
- let(:issue_a) { create(:issue, project: project) }
- let(:issue_b) { create(:issue, project: project) }
- let(:issue_c) { create(:issue, project: project) }
- let(:issue_d) { create(:issue, project: project) }
- let(:issue_project_b_a) { create(:issue, project: project_b) }
- let(:issue_project_unauthorized_a) { create(:issue, project: project_unauthorized) }
+ let_it_be(:user) { create(:user) }
+
+ let_it_be(:project) { create(:project_empty_repo, :public) }
+ let_it_be(:project_b) { create(:project_empty_repo, :public) }
+ let_it_be(:project_unauthorized) { create(:project_empty_repo, :public) }
+ let_it_be(:internal_project) { create(:project_empty_repo, :internal) }
+ let_it_be(:private_project) { create(:project_empty_repo, :private) }
+ let_it_be(:public_project) { create(:project_empty_repo, :public) }
+
+ let_it_be(:issue_a) { create(:issue, project: project) }
+ let_it_be(:issue_b) { create(:issue, project: project) }
+ let_it_be(:issue_c) { create(:issue, project: project) }
+ let_it_be(:issue_d) { create(:issue, project: project) }
+ let_it_be(:issue_project_b_a) { create(:issue, project: project_b) }
+ let_it_be(:issue_project_unauthorized_a) { create(:issue, project: project_unauthorized) }
+ let_it_be(:internal_issue) { create(:issue, project: internal_project) }
+ let_it_be(:private_issue) { create(:issue, project: private_project) }
+ let_it_be(:public_issue) { create(:issue, project: public_project) }
context 'widget visibility' do
context 'when not logged in' do
it 'does not show widget when internal project' do
- project = create :project_empty_repo, :internal
- issue = create :issue, project: project
-
- visit project_issue_path(project, issue)
+ visit project_issue_path(internal_project, internal_issue)
expect(page).not_to have_css('.related-issues-block')
end
it 'does not show widget when private project' do
- project = create :project_empty_repo, :private
- issue = create :issue, project: project
-
- visit project_issue_path(project, issue)
+ visit project_issue_path(private_project, private_issue)
expect(page).not_to have_css('.related-issues-block')
end
it 'shows widget when public project' do
- project = create :project_empty_repo, :public
- issue = create :issue, project: project
-
- visit project_issue_path(project, issue)
+ visit project_issue_path(public_project, public_issue)
expect(page).to have_css('.related-issues-block')
expect(page).not_to have_button 'Add a related issue'
@@ -51,39 +50,29 @@ RSpec.describe 'Related issues', :js do
end
it 'shows widget when internal project' do
- project = create :project_empty_repo, :internal
- issue = create :issue, project: project
-
- visit project_issue_path(project, issue)
+ visit project_issue_path(internal_project, internal_issue)
expect(page).to have_css('.related-issues-block')
expect(page).not_to have_button 'Add a related issue'
end
it 'does not show widget when private project' do
- project = create :project_empty_repo, :private
- issue = create :issue, project: project
-
- visit project_issue_path(project, issue)
+ visit project_issue_path(private_project, private_issue)
expect(page).not_to have_css('.related-issues-block')
end
it 'shows widget when public project' do
- project = create :project_empty_repo, :public
- issue = create :issue, project: project
-
- visit project_issue_path(project, issue)
+ visit project_issue_path(public_project, public_issue)
expect(page).to have_css('.related-issues-block')
expect(page).not_to have_button 'Add a related issue'
end
it 'shows widget on their own public issue' do
- project = create :project_empty_repo, :public
- issue = create :issue, project: project, author: user
+ issue = create :issue, project: public_project, author: user
- visit project_issue_path(project, issue)
+ visit project_issue_path(public_project, issue)
expect(page).to have_css('.related-issues-block')
expect(page).not_to have_button 'Add a related issue'
@@ -96,33 +85,27 @@ RSpec.describe 'Related issues', :js do
end
it 'shows widget when internal project' do
- project = create :project_empty_repo, :internal
- issue = create :issue, project: project
- project.add_guest(user)
+ internal_project.add_guest(user)
- visit project_issue_path(project, issue)
+ visit project_issue_path(internal_project, internal_issue)
expect(page).to have_css('.related-issues-block')
expect(page).not_to have_button 'Add a related issue'
end
it 'shows widget when private project' do
- project = create :project_empty_repo, :private
- issue = create :issue, project: project
- project.add_guest(user)
+ private_project.add_guest(user)
- visit project_issue_path(project, issue)
+ visit project_issue_path(private_project, private_issue)
expect(page).to have_css('.related-issues-block')
expect(page).not_to have_button 'Add a related issue'
end
it 'shows widget when public project' do
- project = create :project_empty_repo, :public
- issue = create :issue, project: project
- project.add_guest(user)
+ public_project.add_guest(user)
- visit project_issue_path(project, issue)
+ visit project_issue_path(public_project, public_issue)
expect(page).to have_css('.related-issues-block')
expect(page).not_to have_button 'Add a related issue'
@@ -135,44 +118,37 @@ RSpec.describe 'Related issues', :js do
end
it 'shows widget when internal project' do
- project = create :project_empty_repo, :internal
- issue = create :issue, project: project
- project.add_reporter(user)
+ internal_project.add_reporter(user)
- visit project_issue_path(project, issue)
+ visit project_issue_path(internal_project, internal_issue)
expect(page).to have_css('.related-issues-block')
expect(page).to have_button 'Add a related issue'
end
it 'shows widget when private project' do
- project = create :project_empty_repo, :private
- issue = create :issue, project: project
- project.add_reporter(user)
+ private_project.add_reporter(user)
- visit project_issue_path(project, issue)
+ visit project_issue_path(private_project, private_issue)
expect(page).to have_css('.related-issues-block')
expect(page).to have_button 'Add a related issue'
end
it 'shows widget when public project' do
- project = create :project_empty_repo, :public
- issue = create :issue, project: project
- project.add_reporter(user)
+ public_project.add_reporter(user)
- visit project_issue_path(project, issue)
+ visit project_issue_path(public_project, public_issue)
expect(page).to have_css('.related-issues-block')
expect(page).to have_button 'Add a related issue'
end
it 'shows widget on their own public issue' do
- project = create :project_empty_repo, :public
- issue = create :issue, project: project, author: user
- project.add_reporter(user)
+ issue = create :issue, project: public_project, author: user
+ public_project.add_reporter(user)
- visit project_issue_path(project, issue)
+ visit project_issue_path(public_project, issue)
expect(page).to have_css('.related-issues-block')
expect(page).to have_button 'Add a related issue'
@@ -184,8 +160,11 @@ RSpec.describe 'Related issues', :js do
let!(:issue_link_b) { create :issue_link, source: issue_a, target: issue_b }
let!(:issue_link_c) { create :issue_link, source: issue_a, target: issue_c }
- before do
+ before_all do
project.add_guest(user)
+ end
+
+ before do
sign_in(user)
end
@@ -213,9 +192,12 @@ RSpec.describe 'Related issues', :js do
end
context 'when user has permission to manage related issues' do
- before do
+ before_all do
project.add_maintainer(user)
project_b.add_maintainer(user)
+ end
+
+ before do
sign_in(user)
end