summaryrefslogtreecommitdiff
path: root/spec/services/issues
diff options
context:
space:
mode:
authorGitLab Bot <gitlab-bot@gitlab.com>2020-11-19 08:27:35 +0000
committerGitLab Bot <gitlab-bot@gitlab.com>2020-11-19 08:27:35 +0000
commit7e9c479f7de77702622631cff2628a9c8dcbc627 (patch)
treec8f718a08e110ad7e1894510980d2155a6549197 /spec/services/issues
parente852b0ae16db4052c1c567d9efa4facc81146e88 (diff)
downloadgitlab-ce-7e9c479f7de77702622631cff2628a9c8dcbc627.tar.gz
Add latest changes from gitlab-org/gitlab@13-6-stable-eev13.6.0-rc42
Diffstat (limited to 'spec/services/issues')
-rw-r--r--spec/services/issues/import_csv_service_spec.rb103
-rw-r--r--spec/services/issues/move_service_spec.rb35
-rw-r--r--spec/services/issues/related_branches_service_spec.rb12
-rw-r--r--spec/services/issues/zoom_link_service_spec.rb22
4 files changed, 58 insertions, 114 deletions
diff --git a/spec/services/issues/import_csv_service_spec.rb b/spec/services/issues/import_csv_service_spec.rb
index cc3e1d23a74..fa40b75190f 100644
--- a/spec/services/issues/import_csv_service_spec.rb
+++ b/spec/services/issues/import_csv_service_spec.rb
@@ -5,108 +5,15 @@ require 'spec_helper'
RSpec.describe Issues::ImportCsvService do
let(:project) { create(:project) }
let(:user) { create(:user) }
-
- subject do
+ let(:service) do
uploader = FileUploader.new(project)
uploader.store!(file)
- described_class.new(user, project, uploader).execute
+ described_class.new(user, project, uploader)
end
- describe '#execute' do
- context 'invalid file' do
- let(:file) { fixture_file_upload('spec/fixtures/banana_sample.gif') }
-
- it 'returns invalid file error' do
- expect(Notify).to receive_message_chain(:import_issues_csv_email, :deliver_later)
-
- expect(subject[:success]).to eq(0)
- expect(subject[:parse_error]).to eq(true)
- end
- end
-
- context 'with a file generated by Gitlab CSV export' do
- let(:file) { fixture_file_upload('spec/fixtures/csv_gitlab_export.csv') }
-
- it 'imports the CSV without errors' do
- expect(Notify).to receive_message_chain(:import_issues_csv_email, :deliver_later)
-
- expect(subject[:success]).to eq(4)
- expect(subject[:error_lines]).to eq([])
- expect(subject[:parse_error]).to eq(false)
- end
-
- it 'correctly sets the issue attributes' do
- expect { subject }.to change { project.issues.count }.by 4
-
- expect(project.issues.reload.last).to have_attributes(
- title: 'Test Title',
- description: 'Test Description'
- )
- end
- end
-
- context 'comma delimited file' do
- let(:file) { fixture_file_upload('spec/fixtures/csv_comma.csv') }
-
- it 'imports CSV without errors' do
- expect(Notify).to receive_message_chain(:import_issues_csv_email, :deliver_later)
-
- expect(subject[:success]).to eq(3)
- expect(subject[:error_lines]).to eq([])
- expect(subject[:parse_error]).to eq(false)
- end
-
- it 'correctly sets the issue attributes' do
- expect { subject }.to change { project.issues.count }.by 3
-
- expect(project.issues.reload.last).to have_attributes(
- title: 'Title with quote"',
- description: 'Description'
- )
- end
- end
-
- context 'tab delimited file with error row' do
- let(:file) { fixture_file_upload('spec/fixtures/csv_tab.csv') }
-
- it 'imports CSV with some error rows' do
- expect(Notify).to receive_message_chain(:import_issues_csv_email, :deliver_later)
-
- expect(subject[:success]).to eq(2)
- expect(subject[:error_lines]).to eq([3])
- expect(subject[:parse_error]).to eq(false)
- end
-
- it 'correctly sets the issue attributes' do
- expect { subject }.to change { project.issues.count }.by 2
-
- expect(project.issues.reload.last).to have_attributes(
- title: 'Hello',
- description: 'World'
- )
- end
- end
-
- context 'semicolon delimited file with CRLF' do
- let(:file) { fixture_file_upload('spec/fixtures/csv_semicolon.csv') }
-
- it 'imports CSV with a blank row' do
- expect(Notify).to receive_message_chain(:import_issues_csv_email, :deliver_later)
-
- expect(subject[:success]).to eq(3)
- expect(subject[:error_lines]).to eq([4])
- expect(subject[:parse_error]).to eq(false)
- end
-
- it 'correctly sets the issue attributes' do
- expect { subject }.to change { project.issues.count }.by 3
-
- expect(project.issues.reload.last).to have_attributes(
- title: 'Hello',
- description: 'World'
- )
- end
- end
+ include_examples 'issuable import csv service', 'issue' do
+ let(:issuables) { project.issues }
+ let(:email_method) { :import_issues_csv_email }
end
end
diff --git a/spec/services/issues/move_service_spec.rb b/spec/services/issues/move_service_spec.rb
index ae1454ce9bb..9b8d21bb8eb 100644
--- a/spec/services/issues/move_service_spec.rb
+++ b/spec/services/issues/move_service_spec.rb
@@ -321,21 +321,40 @@ RSpec.describe Issues::MoveService do
before do
authorized_project.add_developer(user)
+ authorized_project.add_developer(admin)
authorized_project2.add_developer(user)
+ authorized_project2.add_developer(admin)
end
context 'multiple related issues' do
- it 'moves all related issues and retains permissions' do
- new_issue = move_service.execute(old_issue, new_project)
+ context 'when admin mode is enabled', :enable_admin_mode do
+ it 'moves all related issues and retains permissions' do
+ new_issue = move_service.execute(old_issue, new_project)
+
+ expect(new_issue.related_issues(admin))
+ .to match_array([authorized_issue_b, authorized_issue_c, authorized_issue_d, unauthorized_issue])
+
+ expect(new_issue.related_issues(user))
+ .to match_array([authorized_issue_b, authorized_issue_c, authorized_issue_d])
+
+ expect(authorized_issue_d.related_issues(user))
+ .to match_array([new_issue])
+ end
+ end
- expect(new_issue.related_issues(admin))
- .to match_array([authorized_issue_b, authorized_issue_c, authorized_issue_d, unauthorized_issue])
+ context 'when admin mode is disabled' do
+ it 'moves all related issues and retains permissions' do
+ new_issue = move_service.execute(old_issue, new_project)
- expect(new_issue.related_issues(user))
- .to match_array([authorized_issue_b, authorized_issue_c, authorized_issue_d])
+ expect(new_issue.related_issues(admin))
+ .to match_array([authorized_issue_b, authorized_issue_c, authorized_issue_d])
- expect(authorized_issue_d.related_issues(user))
- .to match_array([new_issue])
+ expect(new_issue.related_issues(user))
+ .to match_array([authorized_issue_b, authorized_issue_c, authorized_issue_d])
+
+ expect(authorized_issue_d.related_issues(user))
+ .to match_array([new_issue])
+ end
end
end
end
diff --git a/spec/services/issues/related_branches_service_spec.rb b/spec/services/issues/related_branches_service_spec.rb
index 1780023803a..a8a1f95e800 100644
--- a/spec/services/issues/related_branches_service_spec.rb
+++ b/spec/services/issues/related_branches_service_spec.rb
@@ -74,8 +74,16 @@ RSpec.describe Issues::RelatedBranchesService do
context 'the user has access to otherwise unreadable pipelines' do
let(:user) { create(:admin) }
- it 'returns info a developer could not see' do
- expect(branch_info.pluck(:pipeline_status)).to include(an_instance_of(Gitlab::Ci::Status::Running))
+ context 'when admin mode is enabled', :enable_admin_mode do
+ it 'returns info a developer could not see' do
+ expect(branch_info.pluck(:pipeline_status)).to include(an_instance_of(Gitlab::Ci::Status::Running))
+ end
+ end
+
+ context 'when admin mode is disabled' do
+ it 'does not return info a developer could not see' do
+ expect(branch_info.pluck(:pipeline_status)).not_to include(an_instance_of(Gitlab::Ci::Status::Running))
+ end
end
end
diff --git a/spec/services/issues/zoom_link_service_spec.rb b/spec/services/issues/zoom_link_service_spec.rb
index b095cb24212..8e8adc516cf 100644
--- a/spec/services/issues/zoom_link_service_spec.rb
+++ b/spec/services/issues/zoom_link_service_spec.rb
@@ -46,10 +46,15 @@ RSpec.describe Issues::ZoomLinkService do
expect(ZoomMeeting.canonical_meeting_url(issue)).to eq(zoom_link)
end
- it 'tracks the add event' do
- expect(Gitlab::Tracking).to receive(:event)
- .with('IncidentManagement::ZoomIntegration', 'add_zoom_meeting', label: 'Issue ID', value: issue.id)
+ it 'tracks the add event', :snowplow do
result
+
+ expect_snowplow_event(
+ category: 'IncidentManagement::ZoomIntegration',
+ action: 'add_zoom_meeting',
+ label: 'Issue ID',
+ value: issue.id
+ )
end
it 'creates a zoom_link_added notification' do
@@ -180,10 +185,15 @@ RSpec.describe Issues::ZoomLinkService do
expect(ZoomMeeting.canonical_meeting_url(issue)).to eq(nil)
end
- it 'tracks the remove event' do
- expect(Gitlab::Tracking).to receive(:event)
- .with('IncidentManagement::ZoomIntegration', 'remove_zoom_meeting', label: 'Issue ID', value: issue.id)
+ it 'tracks the remove event', :snowplow do
result
+
+ expect_snowplow_event(
+ category: 'IncidentManagement::ZoomIntegration',
+ action: 'remove_zoom_meeting',
+ label: 'Issue ID',
+ value: issue.id
+ )
end
end