diff options
Diffstat (limited to 'spec/lib/gitlab/bitbucket_import/importers/issues_notes_importer_spec.rb')
-rw-r--r-- | spec/lib/gitlab/bitbucket_import/importers/issues_notes_importer_spec.rb | 53 |
1 files changed, 53 insertions, 0 deletions
diff --git a/spec/lib/gitlab/bitbucket_import/importers/issues_notes_importer_spec.rb b/spec/lib/gitlab/bitbucket_import/importers/issues_notes_importer_spec.rb new file mode 100644 index 00000000000..043cd7f17b9 --- /dev/null +++ b/spec/lib/gitlab/bitbucket_import/importers/issues_notes_importer_spec.rb @@ -0,0 +1,53 @@ +# frozen_string_literal: true + +require 'spec_helper' + +RSpec.describe Gitlab::BitbucketImport::Importers::IssuesNotesImporter, feature_category: :importers do + let_it_be(:project) { create(:project, :import_started) } + # let_it_be(:merge_request_1) { create(:merge_request, source_project: project) } + # let_it_be(:merge_request_2) { create(:merge_request, source_project: project, source_branch: 'other-branch') } + let_it_be(:issue_1) { create(:issue, project: project) } + let_it_be(:issue_2) { create(:issue, project: project) } + + subject(:importer) { described_class.new(project) } + + describe '#execute', :clean_gitlab_redis_cache do + it 'imports the notes from each issue in parallel', :aggregate_failures do + expect(Gitlab::BitbucketImport::ImportIssueNotesWorker).to receive(:perform_in).twice + + waiter = importer.execute + + expect(waiter).to be_an_instance_of(Gitlab::JobWaiter) + expect(waiter.jobs_remaining).to eq(2) + expect(Gitlab::Cache::Import::Caching.values_from_set(importer.already_enqueued_cache_key)) + .to match_array(%w[1 2]) + end + + context 'when an error is raised' do + before do + allow(importer).to receive(:mark_as_enqueued).and_raise(StandardError) + end + + it 'tracks the failure and does not fail' do + expect(Gitlab::Import::ImportFailureService).to receive(:track).once + + importer.execute + end + end + + context 'when issue was already enqueued' do + before do + Gitlab::Cache::Import::Caching.set_add(importer.already_enqueued_cache_key, 2) + end + + it 'does not schedule job for enqueued issues', :aggregate_failures do + expect(Gitlab::BitbucketImport::ImportIssueNotesWorker).to receive(:perform_in).once + + waiter = importer.execute + + expect(waiter).to be_an_instance_of(Gitlab::JobWaiter) + expect(waiter.jobs_remaining).to eq(2) + end + end + end +end |