rails/railties/test/application/multi_db_rake_test.rb
David Heinemeier Hansson d18fc32999
Use storage/ instead of db/ for sqlite3 db files (#46699)
* Use storage/ instead of db/ for sqlite3 db files

db/ should be for configuration only, not data. This will make it easier to mount a single volume into a container for testing, development, and even sqlite3 in production.
2022-12-12 08:32:12 +01:00

61 lines
1.7 KiB
Ruby

# frozen_string_literal: true
require "isolation/abstract_unit"
require "env_helpers"
module ApplicationTests
class MultiDbRakeTest < ActiveSupport::TestCase
include ActiveSupport::Testing::Isolation, EnvHelpers
def setup
build_app(multi_db: true)
@output = rails("generate", "scaffold", "Pet", "name:string", "--database=animals")
end
def teardown
teardown_app
end
def test_generate_scaffold_creates_abstract_model
assert_match %r{app/models/pet\.rb}, @output
assert_match %r{app/models/animals_record\.rb}, @output
end
def test_destroy_scaffold_doesnt_remove_abstract_model
output = rails("destroy", "scaffold", "Pet", "--database=animals")
assert_match %r{app/models/pet\.rb}, output
assert_no_match %r{app/models/animals_record\.rb}, output
end
def test_creates_a_directory_for_migrations
assert_match %r{db/animals_migrate/}, @output
end
def test_migrations_paths_takes_first
app_file "config/database.yml", <<-YAML
default: &default
adapter: sqlite3
pool: 5
timeout: 5000
variables:
statement_timeout: 1000
development:
primary:
<<: *default
database: storage/development.sqlite3
animals:
<<: *default
database: storage/development_animals.sqlite3
migrations_paths:
- db/animals_migrate
- db/common
YAML
output = rails("generate", "scaffold", "Dog", "name:string", "--database=animals")
assert_match %r{db/animals_migrate/}, output
assert_no_match %r{db/common/}, output
end
end
end