-
Notifications
You must be signed in to change notification settings - Fork 10
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
* multidb support * fix phantom_migrations rake task * fix tests * fix cop
- Loading branch information
Showing
12 changed files
with
380 additions
and
51 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -24,3 +24,7 @@ Metrics/BlockLength: | |
Metrics/MethodLength: | ||
Exclude: | ||
- test/**/* | ||
|
||
Metrics/ClassLength: | ||
Exclude: | ||
- test/**/* |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
File renamed without changes.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,14 @@ | ||
# This file is auto-generated from the current state of the database. Instead | ||
# of editing this file, please use the migrations feature of Active Record to | ||
# incrementally modify your database, and then regenerate this schema definition. | ||
# | ||
# This file is the source Rails uses to define your schema when running `bin/rails | ||
# db:schema:load`. When creating a new database, `bin/rails db:schema:load` tends to | ||
# be faster and is potentially less error prone than running all of your | ||
# migrations from scratch. Old migrations may fail to apply correctly if those | ||
# migrations use external dependencies or application code. | ||
# | ||
# It's strongly recommended that you check this file into your version control system. | ||
|
||
ActiveRecord::Schema[7.0].define(version: 2013_09_06_111513) do | ||
end |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,86 @@ | ||
# frozen_string_literal: true | ||
|
||
require "test_helper" | ||
|
||
describe "second db support" do | ||
let(:utils) do | ||
TestUtils.new(migrations_path: "db/migrate_secondary", migrated_path: "tmp/migrated_migrate_secondary") | ||
end | ||
|
||
before do | ||
ActiveRecord::Base.configurations = { "test" => TestingState.db_config["secondary"] } | ||
ActiveRecord::Tasks::DatabaseTasks.database_configuration = { "test" => TestingState.db_config["secondary"] } | ||
ActiveRecord::Base.establish_connection(**TestingState.db_config["secondary"]) | ||
utils.cleanup | ||
end | ||
|
||
describe "db:rollback_branches" do | ||
it "creates the tmp/migrated_migrate_secondary folder" do | ||
refute File.exist?(utils.app_file("tmp/migrated_migrate_secondary")) | ||
utils.run_migrations | ||
assert File.exist?(utils.app_file("tmp/migrated_migrate_secondary")) | ||
end | ||
|
||
it "migrates the migrations" do | ||
assert_empty utils.applied_migrations | ||
utils.run_migrations | ||
assert_equal %w[20130906111511 20130906111512], utils.applied_migrations | ||
end | ||
|
||
it "keeps migrated migrations in tmp/migrated folder" do | ||
utils.run_migrations | ||
assert_equal %w[20130906111511_first.rb 20130906111512_second.rb], utils.migrated_files | ||
end | ||
|
||
it "rolls back the migrations in the reversed order" do | ||
utils.prepare_phantom_migrations | ||
assert_empty TestingState.down | ||
utils.run_migrations | ||
assert_equal %i[second first], TestingState.down | ||
end | ||
|
||
describe "with irreversible migration" do | ||
before do | ||
utils.define_migration_file("20130906111513_irreversible.rb", <<~RUBY) | ||
class Irreversible < ActiveRecord::Migration[6.0] | ||
def up | ||
TestingState.up << :irreversible | ||
end | ||
def down | ||
raise ActiveRecord::IrreversibleMigration | ||
end | ||
end | ||
RUBY | ||
end | ||
|
||
it "keeps track of the irreversible migrations" do | ||
utils.prepare_phantom_migrations | ||
assert_equal %i[first second irreversible], TestingState.up | ||
assert_empty ActualDbSchema.failed | ||
utils.run_migrations | ||
assert_equal(%w[20130906111513_irreversible.rb], ActualDbSchema.failed.map { |m| File.basename(m.filename) }) | ||
end | ||
end | ||
end | ||
|
||
describe "db:phantom_migrations" do | ||
it "shows the list of phantom migrations" do | ||
ActualDbSchema::Git.stub(:current_branch, "fix-bug") do | ||
utils.prepare_phantom_migrations | ||
Rake::Task["db:phantom_migrations"].invoke | ||
Rake::Task["db:phantom_migrations"].reenable | ||
assert_match(/ Status Migration ID Branch Migration File/, TestingState.output) | ||
assert_match(/---------------------------------------------------/, TestingState.output) | ||
assert_match( | ||
%r{ up 20130906111511 fix-bug tmp/migrated_migrate_secondary/20130906111511_first.rb}, | ||
TestingState.output | ||
) | ||
assert_match( | ||
%r{ up 20130906111512 fix-bug tmp/migrated_migrate_secondary/20130906111512_second.rb}, | ||
TestingState.output | ||
) | ||
end | ||
end | ||
end | ||
end |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,115 @@ | ||
# frozen_string_literal: true | ||
|
||
require "test_helper" | ||
|
||
describe "multipe db support" do | ||
let(:utils) do | ||
TestUtils.new( | ||
migrations_path: ["db/migrate", "db/migrate_secondary"], | ||
migrated_path: ["tmp/migrated", "tmp/migrated_migrate_secondary"] | ||
) | ||
end | ||
|
||
before do | ||
ActiveRecord::Base.configurations = { "test" => TestingState.db_config } | ||
ActiveRecord::Tasks::DatabaseTasks.database_configuration = { "test" => TestingState.db_config } | ||
utils.cleanup(TestingState.db_config) | ||
end | ||
|
||
describe "db:rollback_branches" do | ||
it "creates the tmp/migrated folder" do | ||
refute File.exist?(utils.app_file("tmp/migrated")) | ||
refute File.exist?(utils.app_file("tmp/migrated_migrate_secondary")) | ||
utils.run_migrations | ||
assert File.exist?(utils.app_file("tmp/migrated")) | ||
assert File.exist?(utils.app_file("tmp/migrated_migrate_secondary")) | ||
end | ||
|
||
it "migrates the migrations" do | ||
assert_empty utils.applied_migrations(TestingState.db_config) | ||
utils.run_migrations | ||
assert_equal( | ||
%w[20130906111511 20130906111512 20130906111514 20130906111515], | ||
utils.applied_migrations(TestingState.db_config) | ||
) | ||
end | ||
|
||
it "keeps migrated migrations in tmp/migrated folder" do | ||
utils.run_migrations | ||
assert_equal( | ||
%w[ | ||
20130906111511_first_primary.rb | ||
20130906111512_second_primary.rb | ||
20130906111514_first_secondary.rb | ||
20130906111515_second_secondary.rb | ||
], | ||
utils.migrated_files(TestingState.db_config) | ||
) | ||
end | ||
|
||
it "rolls back the migrations in the reversed order" do | ||
utils.prepare_phantom_migrations(TestingState.db_config) | ||
assert_empty TestingState.down | ||
utils.run_migrations | ||
assert_equal %i[second_primary first_primary second_secondary first_secondary], TestingState.down | ||
end | ||
|
||
describe "with irreversible migration" do | ||
before do | ||
%w[primary secondary].each do |prefix| | ||
utils.define_migration_file("20130906111513_irreversible_#{prefix}.rb", <<~RUBY, prefix: prefix) | ||
class Irreversible#{prefix.camelize} < ActiveRecord::Migration[6.0] | ||
def up | ||
TestingState.up << :irreversible_#{prefix} | ||
end | ||
def down | ||
raise ActiveRecord::IrreversibleMigration | ||
end | ||
end | ||
RUBY | ||
end | ||
end | ||
|
||
it "keeps track of the irreversible migrations" do | ||
utils.prepare_phantom_migrations(TestingState.db_config) | ||
assert_equal( | ||
%i[first_primary second_primary irreversible_primary irreversible_secondary first_secondary second_secondary], | ||
TestingState.up | ||
) | ||
assert_empty ActualDbSchema.failed | ||
utils.run_migrations | ||
failed = ActualDbSchema.failed.map { |m| File.basename(m.filename) } | ||
assert_equal(%w[20130906111513_irreversible_primary.rb 20130906111513_irreversible_secondary.rb], failed) | ||
end | ||
end | ||
end | ||
|
||
describe "db:phantom_migrations" do | ||
it "shows the list of phantom migrations" do | ||
ActualDbSchema::Git.stub(:current_branch, "fix-bug") do | ||
utils.prepare_phantom_migrations(TestingState.db_config) | ||
Rake::Task["db:phantom_migrations"].invoke | ||
Rake::Task["db:phantom_migrations"].reenable | ||
assert_match(/ Status Migration ID Branch Migration File/, TestingState.output) | ||
assert_match(/---------------------------------------------------/, TestingState.output) | ||
assert_match( | ||
%r{ up 20130906111511 fix-bug tmp/migrated/20130906111511_first_primary.rb}, | ||
TestingState.output | ||
) | ||
assert_match( | ||
%r{ up 20130906111512 fix-bug tmp/migrated/20130906111512_second_primary.rb}, | ||
TestingState.output | ||
) | ||
assert_match( | ||
%r{ up 20130906111514 fix-bug tmp/migrated_migrate_secondary/20130906111514_first_secondary.rb}, | ||
TestingState.output | ||
) | ||
assert_match( | ||
%r{ up 20130906111515 fix-bug tmp/migrated_migrate_secondary/20130906111515_second_secondary.rb}, | ||
TestingState.output | ||
) | ||
end | ||
end | ||
end | ||
end |
Oops, something went wrong.