diff options
Diffstat (limited to 'spec/lib/gitlab/jira_import/user_mapper_spec.rb')
-rw-r--r-- | spec/lib/gitlab/jira_import/user_mapper_spec.rb | 80 |
1 files changed, 80 insertions, 0 deletions
diff --git a/spec/lib/gitlab/jira_import/user_mapper_spec.rb b/spec/lib/gitlab/jira_import/user_mapper_spec.rb new file mode 100644 index 00000000000..c8c8bd3c5b0 --- /dev/null +++ b/spec/lib/gitlab/jira_import/user_mapper_spec.rb @@ -0,0 +1,80 @@ +# frozen_string_literal: true + +require 'spec_helper' + +describe Gitlab::JiraImport::UserMapper do + let_it_be(:group) { create(:group) } + let_it_be(:project) { create(:project, group: group) } + let_it_be(:user) { create(:user, email: 'user@example.com') } + let_it_be(:email) { create(:email, user: user, email: 'second_email@example.com', confirmed_at: nil) } + + let(:jira_user) { { 'acountId' => '1a2b', 'emailAddress' => 'user@example.com' } } + + describe '#execute' do + subject { described_class.new(project, jira_user).execute } + + context 'when jira_user is nil' do + let(:jira_user) { nil } + + it 'returns nil' do + expect(subject).to be_nil + end + end + + context 'when Gitlab user is not found by email' do + let(:jira_user) { { 'acountId' => '1a2b', 'emailAddress' => 'other@example.com' } } + + it 'returns nil' do + expect(subject).to be_nil + end + end + + context 'when jira_user emailAddress is nil' do + let(:jira_user) { { 'acountId' => '1a2b', 'emailAddress' => nil } } + + it 'returns nil' do + expect(subject).to be_nil + end + end + + context 'when jira_user emailAddress key is missing' do + let(:jira_user) { { 'acountId' => '1a2b' } } + + it 'returns nil' do + expect(subject).to be_nil + end + end + + context 'when found user is not a project member' do + it 'returns nil' do + expect(subject).to be_nil + end + end + + context 'when found user is a project member' do + it 'returns the found user' do + project.add_developer(user) + + expect(subject).to eq(user) + end + end + + context 'when user found by unconfirmd secondary address is a project member' do + let(:jira_user) { { 'acountId' => '1a2b', 'emailAddress' => 'second_email@example.com' } } + + it 'returns the found user' do + project.add_developer(user) + + expect(subject).to eq(user) + end + end + + context 'when user is a group member' do + it 'returns the found user' do + group.add_developer(user) + + expect(subject).to eq(user) + end + end + end +end |