Welcome to mirror list, hosted at ThFree Co, Russian Federation.

gitlab.com/gitlab-org/gitlab-foss.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'spec/lib/bulk_imports/ndjson_pipeline_spec.rb')
-rw-r--r--spec/lib/bulk_imports/ndjson_pipeline_spec.rb30
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)