diff --git a/db/dev_seeds.rb b/db/dev_seeds.rb index ff5a658ac..73834c32d 100644 --- a/db/dev_seeds.rb +++ b/db/dev_seeds.rb @@ -1,13 +1,17 @@ unless Rails.env.test? - Tenant.destroy_all + Tenant.destroy_all if Tenant.default? ActiveRecord::Tasks::DatabaseTasks.truncate_all end @logger = Logger.new(STDOUT) @logger.formatter = proc do |_severity, _datetime, _progname, msg| - msg unless @avoid_log + msg unless Rails.env.test? end +def load_dev_seeds(dev_seeds_file) + load Rails.root.join("db", "dev_seeds", "#{dev_seeds_file}.rb") +end + def section(section_title) @logger.info section_title yield @@ -32,28 +36,30 @@ def random_locales_attributes(**attribute_names_with_values) end end -require_relative "dev_seeds/settings" -require_relative "dev_seeds/geozones" -require_relative "dev_seeds/users" -require_relative "dev_seeds/tags_categories" -require_relative "dev_seeds/debates" -require_relative "dev_seeds/proposals" -require_relative "dev_seeds/budgets" -require_relative "dev_seeds/comments" -require_relative "dev_seeds/votes" -require_relative "dev_seeds/flags" -require_relative "dev_seeds/hiddings" -require_relative "dev_seeds/banners" -require_relative "dev_seeds/polls" -require_relative "dev_seeds/communities" -require_relative "dev_seeds/legislation_processes" -require_relative "dev_seeds/newsletters" -require_relative "dev_seeds/notifications" -require_relative "dev_seeds/widgets" -require_relative "dev_seeds/admin_notifications" -require_relative "dev_seeds/legislation_proposals" -require_relative "dev_seeds/milestones" -require_relative "dev_seeds/pages" -require_relative "dev_seeds/sdg" +log "Creating dev seeds for tenant #{Tenant.current_schema}" unless Tenant.default? + +load_dev_seeds "settings" +load_dev_seeds "geozones" +load_dev_seeds "users" +load_dev_seeds "tags_categories" +load_dev_seeds "debates" +load_dev_seeds "proposals" +load_dev_seeds "budgets" +load_dev_seeds "comments" +load_dev_seeds "votes" +load_dev_seeds "flags" +load_dev_seeds "hiddings" +load_dev_seeds "banners" +load_dev_seeds "polls" +load_dev_seeds "communities" +load_dev_seeds "legislation_processes" +load_dev_seeds "newsletters" +load_dev_seeds "notifications" +load_dev_seeds "widgets" +load_dev_seeds "admin_notifications" +load_dev_seeds "legislation_proposals" +load_dev_seeds "milestones" +load_dev_seeds "pages" +load_dev_seeds "sdg" log "All dev seeds created successfuly 👍" diff --git a/lib/tasks/db.rake b/lib/tasks/db.rake index 22597433a..7b38838fa 100644 --- a/lib/tasks/db.rake +++ b/lib/tasks/db.rake @@ -1,9 +1,8 @@ namespace :db do desc "Resets the database and loads it from db/dev_seeds.rb" - task :dev_seed, [:print_log] => [:environment] do |t, args| - @avoid_log = args[:print_log] == "avoid_log" + task :dev_seed, [:tenant] => [:environment] do |_, args| I18n.enforce_available_locales = false - load(Rails.root.join("db", "dev_seeds.rb")) + Tenant.switch(args[:tenant]) { load(Rails.root.join("db", "dev_seeds.rb")) } end desc "Calculates the TSV column for all comments and proposal notifications" diff --git a/spec/lib/tasks/dev_seed_spec.rb b/spec/lib/tasks/dev_seed_spec.rb index 71c816df3..bb2ac5994 100644 --- a/spec/lib/tasks/dev_seed_spec.rb +++ b/spec/lib/tasks/dev_seed_spec.rb @@ -1,11 +1,18 @@ require "rails_helper" describe "rake db:dev_seed" do - let :run_rake_task do - Rake.application.invoke_task("db:dev_seed[avoid_log]") - end + before { Rake::Task["db:dev_seed"].reenable } it "seeds the database without errors" do - expect { run_rake_task }.not_to raise_error + expect { Rake.application.invoke_task("db:dev_seed") }.not_to raise_error + end + + it "can seed a tenant" do + create(:tenant, schema: "democracy") + + Rake.application.invoke_task("db:dev_seed[democracy]") + + expect(Debate.count).to eq 0 + Tenant.switch("democracy") { expect(Debate.count).not_to eq 0 } end end