From 031e35373777535a631d6a7dedb8e2092f95e59f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Karel=20Pi=C4=8Dman?= Date: Wed, 26 Nov 2025 08:38:22 +0100 Subject: [PATCH] #9 Active Storage - PG::ForeignKeyViolation --- test/integration_test.rb | 23 ++++++++++++++++++----- test/test_case.rb | 23 ++++++++++++++++++----- test/unit_test.rb | 23 ++++++++++++++++++----- 3 files changed, 54 insertions(+), 15 deletions(-) diff --git a/test/integration_test.rb b/test/integration_test.rb index 4b993a9a..d8d16548 100644 --- a/test/integration_test.rb +++ b/test/integration_test.rb @@ -25,11 +25,24 @@ module RedmineDmsf super # Load all plugin's fixtures dir = File.join(File.dirname(__FILE__), 'fixtures') - ext = '.yml' - Dir.glob("#{dir}/**/*#{ext}").each do |file| - fixture = File.basename(file, ext) - ActiveRecord::FixtureSet.create_fixtures dir, fixture - end + # We can't simply read the whole dir as we need to be active_storage_blobs read before + # active_storage_attachments due to PG::ForeignKeyViolation + ActiveRecord::FixtureSet.create_fixtures dir, 'active_storage_blobs' + ActiveRecord::FixtureSet.create_fixtures dir, 'active_storage_attachments' + ActiveRecord::FixtureSet.create_fixtures dir, 'custom_fields' + ActiveRecord::FixtureSet.create_fixtures dir, 'custom_values' + ActiveRecord::FixtureSet.create_fixtures dir, 'dmsf_file_revisions' + ActiveRecord::FixtureSet.create_fixtures dir, 'dmsf_files' + ActiveRecord::FixtureSet.create_fixtures dir, 'dmsf_folder_permissions' + ActiveRecord::FixtureSet.create_fixtures dir, 'dmsf_folders' + ActiveRecord::FixtureSet.create_fixtures dir, 'dmsf_links' + ActiveRecord::FixtureSet.create_fixtures dir, 'dmsf_locks' + ActiveRecord::FixtureSet.create_fixtures dir, 'dmsf_public_urls' + ActiveRecord::FixtureSet.create_fixtures dir, 'dmsf_workflow_step_actions' + ActiveRecord::FixtureSet.create_fixtures dir, 'dmsf_workflow_step_assignments' + ActiveRecord::FixtureSet.create_fixtures dir, 'dmsf_workflow_steps' + ActiveRecord::FixtureSet.create_fixtures dir, 'dmsf_workflows' + ActiveRecord::FixtureSet.create_fixtures dir, 'queries' end def setup diff --git a/test/test_case.rb b/test/test_case.rb index 32fb5fef..242bd775 100644 --- a/test/test_case.rb +++ b/test/test_case.rb @@ -25,11 +25,24 @@ module RedmineDmsf super # Load all plugin's fixtures dir = File.join(File.dirname(__FILE__), 'fixtures') - ext = '.yml' - Dir.glob("#{dir}/**/*#{ext}").each do |file| - fixture = File.basename(file, ext) - ActiveRecord::FixtureSet.create_fixtures dir, fixture - end + # We can't simply read the whole dir as we need to be active_storage_blobs read before + # active_storage_attachments due to PG::ForeignKeyViolation + ActiveRecord::FixtureSet.create_fixtures dir, 'active_storage_blobs' + ActiveRecord::FixtureSet.create_fixtures dir, 'active_storage_attachments' + ActiveRecord::FixtureSet.create_fixtures dir, 'custom_fields' + ActiveRecord::FixtureSet.create_fixtures dir, 'custom_values' + ActiveRecord::FixtureSet.create_fixtures dir, 'dmsf_file_revisions' + ActiveRecord::FixtureSet.create_fixtures dir, 'dmsf_files' + ActiveRecord::FixtureSet.create_fixtures dir, 'dmsf_folder_permissions' + ActiveRecord::FixtureSet.create_fixtures dir, 'dmsf_folders' + ActiveRecord::FixtureSet.create_fixtures dir, 'dmsf_links' + ActiveRecord::FixtureSet.create_fixtures dir, 'dmsf_locks' + ActiveRecord::FixtureSet.create_fixtures dir, 'dmsf_public_urls' + ActiveRecord::FixtureSet.create_fixtures dir, 'dmsf_workflow_step_actions' + ActiveRecord::FixtureSet.create_fixtures dir, 'dmsf_workflow_step_assignments' + ActiveRecord::FixtureSet.create_fixtures dir, 'dmsf_workflow_steps' + ActiveRecord::FixtureSet.create_fixtures dir, 'dmsf_workflows' + ActiveRecord::FixtureSet.create_fixtures dir, 'queries' end def setup diff --git a/test/unit_test.rb b/test/unit_test.rb index 57365f29..1730fccf 100644 --- a/test/unit_test.rb +++ b/test/unit_test.rb @@ -25,11 +25,24 @@ module RedmineDmsf super # Load all plugin's fixtures dir = File.join(File.dirname(__FILE__), 'fixtures') - ext = '.yml' - Dir.glob("#{dir}/**/*#{ext}").each do |file| - fixture = File.basename(file, ext) - ActiveRecord::FixtureSet.create_fixtures dir, fixture - end + # We can't simply read the whole dir as we need to be active_storage_blobs read before + # active_storage_attachments due to PG::ForeignKeyViolation + ActiveRecord::FixtureSet.create_fixtures dir, 'active_storage_blobs' + ActiveRecord::FixtureSet.create_fixtures dir, 'active_storage_attachments' + ActiveRecord::FixtureSet.create_fixtures dir, 'custom_fields' + ActiveRecord::FixtureSet.create_fixtures dir, 'custom_values' + ActiveRecord::FixtureSet.create_fixtures dir, 'dmsf_file_revisions' + ActiveRecord::FixtureSet.create_fixtures dir, 'dmsf_files' + ActiveRecord::FixtureSet.create_fixtures dir, 'dmsf_folder_permissions' + ActiveRecord::FixtureSet.create_fixtures dir, 'dmsf_folders' + ActiveRecord::FixtureSet.create_fixtures dir, 'dmsf_links' + ActiveRecord::FixtureSet.create_fixtures dir, 'dmsf_locks' + ActiveRecord::FixtureSet.create_fixtures dir, 'dmsf_public_urls' + ActiveRecord::FixtureSet.create_fixtures dir, 'dmsf_workflow_step_actions' + ActiveRecord::FixtureSet.create_fixtures dir, 'dmsf_workflow_step_assignments' + ActiveRecord::FixtureSet.create_fixtures dir, 'dmsf_workflow_steps' + ActiveRecord::FixtureSet.create_fixtures dir, 'dmsf_workflows' + ActiveRecord::FixtureSet.create_fixtures dir, 'queries' end def setup