diff options
Diffstat (limited to 'spec/lib/bulk_imports/ndjson_pipeline_spec.rb')
-rw-r--r-- | spec/lib/bulk_imports/ndjson_pipeline_spec.rb | 30 |
1 files changed, 25 insertions, 5 deletions
diff --git a/spec/lib/bulk_imports/ndjson_pipeline_spec.rb b/spec/lib/bulk_imports/ndjson_pipeline_spec.rb index 29f42ab3366..5611879868d 100644 --- a/spec/lib/bulk_imports/ndjson_pipeline_spec.rb +++ b/spec/lib/bulk_imports/ndjson_pipeline_spec.rb @@ -6,6 +6,8 @@ RSpec.describe BulkImports::NdjsonPipeline, feature_category: :importers do let_it_be(:group) { create(:group) } let_it_be(:project) { create(:project) } let_it_be(:user) { create(:user) } + let(:tracker) { instance_double(BulkImports::Tracker, bulk_import_entity_id: 1) } + let(:context) { instance_double(BulkImports::Pipeline::Context, tracker: tracker, extra: { batch_number: 1 }) } let(:klass) do Class.new do @@ -13,11 +15,12 @@ RSpec.describe BulkImports::NdjsonPipeline, feature_category: :importers do relation_name 'test' - attr_reader :portable, :current_user + attr_reader :portable, :current_user, :context - def initialize(portable, user) + def initialize(portable, user, context) @portable = portable @current_user = user + @context = context end end end @@ -26,12 +29,29 @@ RSpec.describe BulkImports::NdjsonPipeline, feature_category: :importers do stub_const('NdjsonPipelineClass', klass) end - subject { NdjsonPipelineClass.new(group, user) } + subject { NdjsonPipelineClass.new(group, user, context) } it 'marks pipeline as ndjson' do expect(NdjsonPipelineClass.file_extraction_pipeline?).to eq(true) end + describe 'caching' do + it 'saves completed entry in cache' do + subject.save_processed_entry("entry", 10) + + expected_cache_key = "ndjson_pipeline_class/1/1" + expect(Gitlab::Cache::Import::Caching.read(expected_cache_key)).to eq("10") + end + + it 'identifies completed entries' do + subject.save_processed_entry("entry", 10) + + expect(subject.already_processed?("entry", 11)).to be_falsy + expect(subject.already_processed?("entry", 10)).to be_truthy + expect(subject.already_processed?("entry", 9)).to be_truthy + end + end + describe '#deep_transform_relation!' do it 'transforms relation hash' do transformed = subject.deep_transform_relation!({}, 'test', {}) do |key, hash| @@ -238,7 +258,7 @@ RSpec.describe BulkImports::NdjsonPipeline, feature_category: :importers do end context 'when portable is project' do - subject { NdjsonPipelineClass.new(project, user) } + subject { NdjsonPipelineClass.new(project, user, context) } it 'returns group relation name override' do expect(subject.relation_key_override('labels')).to eq('project_labels') @@ -254,7 +274,7 @@ RSpec.describe BulkImports::NdjsonPipeline, feature_category: :importers do end context 'when portable is project' do - subject { NdjsonPipelineClass.new(project, user) } + subject { NdjsonPipelineClass.new(project, user, context) } it 'returns project relation factory' do expect(subject.relation_factory).to eq(Gitlab::ImportExport::Project::RelationFactory) |