diff options
Diffstat (limited to 'spec/features/issues/related_issues_spec.rb')
-rw-r--r-- | spec/features/issues/related_issues_spec.rb | 116 |
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 |