gitlab-org--gitlab-foss/spec/lib/bulk_imports/users_mapper_spec.rb

68 lines
1.8 KiB
Ruby

# frozen_string_literal: true
require 'spec_helper'
RSpec.describe BulkImports::UsersMapper do
let_it_be(:user) { create(:user) }
let_it_be(:import) { create(:bulk_import, user: user) }
let_it_be(:entity) { create(:bulk_import_entity, bulk_import: import) }
let(:context) do
instance_double(
BulkImports::Pipeline::Context,
bulk_import: import,
entity: entity,
current_user: user
)
end
subject { described_class.new(context: context) }
describe '#map' do
context 'when value for specified key exists' do
it 'returns a map of source & destination user ids from redis' do
allow(Gitlab::Cache::Import::Caching).to receive(:values_from_hash).and_return({ "1" => "2" })
expect(subject.map).to eq({ 1 => 2 })
end
end
context 'when value for specified key does not exist' do
it 'returns default value' do
expect(subject.map[:non_existent_key]).to eq(user.id)
end
end
end
describe '#default_user_id' do
it 'returns current user id' do
expect(subject.default_user_id).to eq(user.id)
end
end
describe '#include?' do
context 'when source user id is present in the map' do
it 'returns true' do
allow(subject).to receive(:map).and_return({ 1 => 2 })
expect(subject.include?(1)).to eq(true)
end
end
context 'when source user id is missing in the map' do
it 'returns false' do
allow(subject).to receive(:map).and_return({})
expect(subject.include?(1)).to eq(false)
end
end
end
describe '#cache_source_user_id' do
it 'caches provided source & destination user ids in redis' do
expect(Gitlab::Cache::Import::Caching).to receive(:hash_add).with("bulk_imports/#{import.id}/#{entity.id}/source_user_ids", 1, 2)
subject.cache_source_user_id(1, 2)
end
end
end