diff --git a/app/models/project.rb b/app/models/project.rb index 329dc748234b51243b7024a98624df34d754fd97..ee00e83eb5da5553e64ae9d8612c38fb51c85715 100644 --- a/app/models/project.rb +++ b/app/models/project.rb @@ -2304,17 +2304,21 @@ def after_import enqueue_record_project_target_platforms + reset_counters_and_iids + + import_state&.finish + after_create_default_branch + join_pool_repository + refresh_markdown_cache! + end + + def reset_counters_and_iids # The import assigns iid values on its own, e.g. by re-using GitHub ids. # Flush existing InternalId records for this project for consistency reasons. # Those records are going to be recreated with the next normal creation # of a model instance (e.g. an Issue). InternalId.flush_records!(project: self) - - import_state&.finish update_project_counter_caches - after_create_default_branch - join_pool_repository - refresh_markdown_cache! end def update_project_counter_caches diff --git a/app/workers/projects/import_export/relation_import_worker.rb b/app/workers/projects/import_export/relation_import_worker.rb index 9b3147c78324e287e092e157b16675c3dd38cbd6..6a626fcd7bf517143dd67dec950c51e9a34847b5 100644 --- a/app/workers/projects/import_export/relation_import_worker.rb +++ b/app/workers/projects/import_export/relation_import_worker.rb @@ -27,6 +27,7 @@ def perform(tracker_id, user_id) extract_import_file process_import + perform_post_import_tasks tracker.finish! rescue StandardError => error @@ -98,6 +99,10 @@ def members_mapper importable: project ) end + + def perform_post_import_tasks + project.reset_counters_and_iids + end end end end diff --git a/spec/models/project_spec.rb b/spec/models/project_spec.rb index cb69aaaa148a8da3e78f8ba72d1ece63ab07d4be..67d3b3e7518b5d4524aaefff9ef805ab1c121527 100644 --- a/spec/models/project_spec.rb +++ b/spec/models/project_spec.rb @@ -5991,10 +5991,9 @@ def has_external_wiki expect(project.repository).to receive(:remove_prohibited_branches).ordered expect(project.wiki.repository).to receive(:expire_content_cache) expect(import_state).to receive(:finish) - expect(project).to receive(:update_project_counter_caches) + expect(project).to receive(:reset_counters_and_iids) expect(project).to receive(:after_create_default_branch) expect(project).to receive(:refresh_markdown_cache!) - expect(InternalId).to receive(:flush_records!).with(project: project) expect(ProjectCacheWorker).to receive(:perform_async).with(project.id, [], [:repository_size, :wiki_size]) expect(DetectRepositoryLanguagesWorker).to receive(:perform_async).with(project.id) expect(AuthorizedProjectUpdate::ProjectRecalculateWorker).to receive(:perform_async).with(project.id) @@ -6076,6 +6075,17 @@ def has_external_wiki end end + describe '#reset_counters_and_iids' do + let(:project) { build(:project) } + + it 'runs the correct hooks' do + expect(project).to receive(:update_project_counter_caches) + expect(InternalId).to receive(:flush_records!).with(project: project) + + project.reset_counters_and_iids + end + end + describe '#update_project_counter_caches' do let(:project) { create(:project) } diff --git a/spec/workers/projects/import_export/relation_import_worker_spec.rb b/spec/workers/projects/import_export/relation_import_worker_spec.rb index f06cc257e0ed14745e4d166c719097738eb9771f..ab87adec2cdedf169a84c280877c46c8d020fcab 100644 --- a/spec/workers/projects/import_export/relation_import_worker_spec.rb +++ b/spec/workers/projects/import_export/relation_import_worker_spec.rb @@ -29,6 +29,12 @@ it 'marks the tracker as finished' do expect { perform }.to change { tracker.reload.finished? }.from(false).to(true) end + + it 'refreshes the project stats' do + expect(worker).to receive(:perform_post_import_tasks) + + perform + end end context 'when the import fails' do