diff options
Diffstat (limited to 'spec/lib/bulk_imports/users_mapper_spec.rb')
-rw-r--r-- | spec/lib/bulk_imports/users_mapper_spec.rb | 68 |
1 files changed, 68 insertions, 0 deletions
diff --git a/spec/lib/bulk_imports/users_mapper_spec.rb b/spec/lib/bulk_imports/users_mapper_spec.rb new file mode 100644 index 00000000000..e6357319d05 --- /dev/null +++ b/spec/lib/bulk_imports/users_mapper_spec.rb @@ -0,0 +1,68 @@ +# 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 |