diff options
author | GitLab Bot <gitlab-bot@gitlab.com> | 2020-06-30 00:09:07 +0300 |
---|---|---|
committer | GitLab Bot <gitlab-bot@gitlab.com> | 2020-06-30 00:09:07 +0300 |
commit | 777f6da99ae8dd4111bb880893cee9c8cfefa132 (patch) | |
tree | 06f28423a1a8277c1f5ed6e2216bed391b0ecf47 /spec/services/jira_import | |
parent | aa99514d5c37e08c0fa49d03212ccdc943b8d31e (diff) |
Add latest changes from gitlab-org/gitlab@master
Diffstat (limited to 'spec/services/jira_import')
-rw-r--r-- | spec/services/jira_import/start_import_service_spec.rb | 84 |
1 files changed, 62 insertions, 22 deletions
diff --git a/spec/services/jira_import/start_import_service_spec.rb b/spec/services/jira_import/start_import_service_spec.rb index 0437dd19e34..a10928355ef 100644 --- a/spec/services/jira_import/start_import_service_spec.rb +++ b/spec/services/jira_import/start_import_service_spec.rb @@ -8,8 +8,15 @@ RSpec.describe JiraImport::StartImportService do let_it_be(:user) { create(:user) } let_it_be(:project, reload: true) { create(:project) } let(:key) { 'KEY' } + let(:mapping) do + [ + { jira_account_id: 'abc', gitlab_id: 12 }, + { jira_account_id: 'def', gitlab_id: nil }, + { jira_account_id: nil, gitlab_id: 1 } + ] + end - subject { described_class.new(user, project, key).execute } + subject { described_class.new(user, project, key, mapping).execute } context 'when an error is returned from the project validation' do before do @@ -37,7 +44,7 @@ RSpec.describe JiraImport::StartImportService do context 'when correct data provided' do let(:fake_key) { 'some-key' } - subject { described_class.new(user, project, fake_key).execute } + subject { described_class.new(user, project, fake_key, mapping).execute } context 'when import is already running' do let_it_be(:jira_import_state) { create(:jira_import_state, :started, project: project) } @@ -62,35 +69,68 @@ RSpec.describe JiraImport::StartImportService do end context 'when everything is ok' do - it 'returns success response' do - expect(subject).to be_a(ServiceResponse) - expect(subject).to be_success - end + context 'with complete mapping' do + before do + expect(Gitlab::JiraImport).to receive(:cache_users_mapping).with(project.id, { 'abc' => 12 }) + end - it 'schedules Jira import' do - subject + it 'returns success response' do + expect(subject).to be_a(ServiceResponse) + expect(subject).to be_success + end - expect(project.latest_jira_import).to be_scheduled - end + it 'schedules Jira import' do + subject - it 'creates Jira import data', :aggregate_failures do - jira_import = subject.payload[:import_data] + expect(project.latest_jira_import).to be_scheduled + end + + it 'creates Jira import data', :aggregate_failures do + jira_import = subject.payload[:import_data] + + expect(jira_import.jira_project_xid).to eq(0) + expect(jira_import.jira_project_name).to eq(fake_key) + expect(jira_import.jira_project_key).to eq(fake_key) + expect(jira_import.user).to eq(user) + end + + it 'creates Jira import label' do + expect { subject }.to change { Label.count }.by(1) + end + + it 'creates Jira label title with correct number' do + jira_import = subject.payload[:import_data] + label_title = "jira-import::#{jira_import.jira_project_key}-1" - expect(jira_import.jira_project_xid).to eq(0) - expect(jira_import.jira_project_name).to eq(fake_key) - expect(jira_import.jira_project_key).to eq(fake_key) - expect(jira_import.user).to eq(user) + expect(jira_import.label.title).to eq(label_title) + end end - it 'creates Jira import label' do - expect { subject }.to change { Label.count }.by(1) + context 'when mapping is nil' do + let(:mapping) { nil } + + it 'returns success response' do + expect(Gitlab::JiraImport).not_to receive(:cache_users_mapping) + + expect(subject).to be_a(ServiceResponse) + expect(subject).to be_success + end end - it 'creates Jira label title with correct number' do - jira_import = subject.payload[:import_data] - label_title = "jira-import::#{jira_import.jira_project_key}-1" + context 'when no mapping value is complete' do + let(:mapping) do + [ + { jira_account_id: 'def', gitlab_id: nil }, + { jira_account_id: nil, gitlab_id: 1 } + ] + end - expect(jira_import.label.title).to eq(label_title) + it 'returns success response' do + expect(Gitlab::JiraImport).not_to receive(:cache_users_mapping) + + expect(subject).to be_a(ServiceResponse) + expect(subject).to be_success + end end end |