mirror of
https://github.com/opf/openproject.git
synced 2026-06-14 03:30:14 +00:00
Fix broken rake db:seed
It was failing with the error "cannot generate demo seed data without
setting locale first".
When seeding, there is a mechanism in place to ensure the seed data is
not accessed before the language has been set. The new mechanism
introduced in b0716517e4 to check if all references are
available in `applicable?` accesses the seed data before the language
has been set for `RootSeeder`, making the `rake db:seed` task fail.
The fix is to bypass the `applicable?` check for `RootSeeder` and return
`true`.
Also it was not detected by our test suite because `#seed_data!` was
used instead of `#seed!`. This is now fixed.
This commit is contained in:
@@ -40,6 +40,10 @@ class RootSeeder < Seeder
|
||||
load_available_seeders
|
||||
end
|
||||
|
||||
def applicable?
|
||||
true
|
||||
end
|
||||
|
||||
# Returns the demo data in the default language.
|
||||
def seed_data
|
||||
@seed_data ||= begin
|
||||
|
||||
@@ -120,7 +120,7 @@ RSpec.describe RootSeeder,
|
||||
|
||||
before_all do
|
||||
with_edition("bim") do
|
||||
root_seeder.seed_data!
|
||||
root_seeder.seed!
|
||||
end
|
||||
end
|
||||
|
||||
@@ -132,7 +132,7 @@ RSpec.describe RootSeeder,
|
||||
before_all do
|
||||
with_locale_env("de") do
|
||||
with_edition("bim") do
|
||||
described_class.new.seed_data!
|
||||
described_class.new.seed!
|
||||
end
|
||||
end
|
||||
end
|
||||
@@ -161,7 +161,7 @@ RSpec.describe RootSeeder,
|
||||
Project.destroy_all
|
||||
# destroying all statuses will destroy all workflows by cascade
|
||||
Status.where.not(id: new_status.id).destroy_all
|
||||
described_class.new.seed_data!
|
||||
described_class.new.seed!
|
||||
end
|
||||
|
||||
it "does not create additional data and does not raise any errors" do
|
||||
@@ -183,7 +183,7 @@ RSpec.describe RootSeeder,
|
||||
"tr: #{original_translation}"
|
||||
end
|
||||
|
||||
root_seeder.seed_data!
|
||||
root_seeder.seed!
|
||||
end
|
||||
end
|
||||
|
||||
@@ -223,7 +223,7 @@ RSpec.describe RootSeeder,
|
||||
before_all do
|
||||
with_locale_env("de", env_var_name: "OPENPROJECT_DEFAULT__LANGUAGE") do
|
||||
with_edition("bim") do
|
||||
root_seeder.seed_data!
|
||||
root_seeder.seed!
|
||||
end
|
||||
end
|
||||
end
|
||||
@@ -247,7 +247,7 @@ RSpec.describe RootSeeder,
|
||||
allow(Settings::Definition["default_projects_modules"])
|
||||
.to receive(:writable?).and_return(false)
|
||||
|
||||
root_seeder.seed_data!
|
||||
root_seeder.seed!
|
||||
end
|
||||
end
|
||||
end
|
||||
@@ -285,7 +285,7 @@ RSpec.describe RootSeeder,
|
||||
with_env("OPENPROJECT_SEED_ADMIN_USER_LOCKED" => "true") do
|
||||
with_edition("bim") do
|
||||
reset(:seed_admin_user_locked)
|
||||
root_seeder.seed_data!
|
||||
root_seeder.seed!
|
||||
end
|
||||
end
|
||||
ensure
|
||||
|
||||
@@ -161,7 +161,7 @@ RSpec.describe RootSeeder,
|
||||
|
||||
before_all do
|
||||
with_edition("standard") do
|
||||
root_seeder.seed_data!
|
||||
root_seeder.seed!
|
||||
|
||||
# Run background jobs as those are also triggered by seeding.
|
||||
# But since those background jobs retrigger themselves, don't wrap the seeding inside a block.
|
||||
@@ -176,7 +176,7 @@ RSpec.describe RootSeeder,
|
||||
context "when run a second time in a different language", :settings_reset do
|
||||
before_all do
|
||||
with_locale_env("de") do
|
||||
described_class.new.seed_data!
|
||||
described_class.new.seed!
|
||||
end
|
||||
end
|
||||
|
||||
@@ -206,7 +206,7 @@ RSpec.describe RootSeeder,
|
||||
# Simulate a user having deleted the seeded colors.
|
||||
# Could also be the user changing the hexcode of the colors, making lookup by hexcode fail.
|
||||
Color.where(name: ["Grey", "Blue", "Black"]).delete_all
|
||||
described_class.new.seed_data!
|
||||
described_class.new.seed!
|
||||
end
|
||||
end
|
||||
|
||||
@@ -226,7 +226,7 @@ RSpec.describe RootSeeder,
|
||||
Project.destroy_all
|
||||
# destroying all statuses will destroy all workflows by cascade
|
||||
Status.where.not(id: new_status.id).destroy_all
|
||||
described_class.new.seed_data!
|
||||
described_class.new.seed!
|
||||
end
|
||||
|
||||
it "does not create additional data and does not raise any errors" do
|
||||
@@ -249,7 +249,7 @@ RSpec.describe RootSeeder,
|
||||
AddWorkPackageRoles.new.up
|
||||
|
||||
with_edition("standard") do
|
||||
root_seeder.seed_data!
|
||||
root_seeder.seed!
|
||||
|
||||
# Run background jobs as those are also triggered by seeding.
|
||||
# But since those background jobs retrigger themselves, don't wrap the seeding inside a block.
|
||||
@@ -270,7 +270,7 @@ RSpec.describe RootSeeder,
|
||||
original_translation = m.call(*args, **kw)
|
||||
"tr: #{original_translation}"
|
||||
end
|
||||
root_seeder.seed_data!
|
||||
root_seeder.seed!
|
||||
|
||||
# Run background jobs as those are also triggered by seeding.
|
||||
# But since those background jobs retrigger themselves, don't wrap the seeding inside a block.
|
||||
@@ -296,7 +296,7 @@ RSpec.describe RootSeeder,
|
||||
before_all do
|
||||
with_locale_env("de", env_var_name:) do
|
||||
with_edition("standard") do
|
||||
root_seeder.seed_data!
|
||||
root_seeder.seed!
|
||||
|
||||
# Run background jobs as those are also triggered by seeding.
|
||||
# But since those background jobs retrigger themselves, don't wrap the seeding inside a block.
|
||||
@@ -330,7 +330,7 @@ RSpec.describe RootSeeder,
|
||||
allow(Settings::Definition["default_projects_modules"])
|
||||
.to receive(:writable?).and_return(false)
|
||||
|
||||
root_seeder.seed_data!
|
||||
root_seeder.seed!
|
||||
end
|
||||
end
|
||||
|
||||
@@ -363,7 +363,7 @@ RSpec.describe RootSeeder,
|
||||
with_env("OPENPROJECT_SEED_ADMIN_USER_LOCKED" => "true") do
|
||||
with_edition("standard") do
|
||||
reset(:seed_admin_user_locked)
|
||||
root_seeder.seed_data!
|
||||
root_seeder.seed!
|
||||
end
|
||||
end
|
||||
ensure
|
||||
|
||||
Reference in New Issue
Block a user