81 lines
2.1 KiB
Ruby
81 lines
2.1 KiB
Ruby
|
# 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
|