From f02d2185ebbe01f455a9a91216ff7094b014ea72 Mon Sep 17 00:00:00 2001 From: Josh Susser Date: Sun, 2 Dec 2012 21:16:32 -0800 Subject: Add migration history to schema.rb dump --- activerecord/test/cases/ar_schema_test.rb | 51 ++++++++++++++++++++++ activerecord/test/cases/schema_dumper_test.rb | 18 +++++++- .../migrations/always_safe/1001_always_safe.rb | 5 +++ .../test/migrations/always_safe/1002_still_safe.rb | 5 +++ 4 files changed, 77 insertions(+), 2 deletions(-) create mode 100644 activerecord/test/migrations/always_safe/1001_always_safe.rb create mode 100644 activerecord/test/migrations/always_safe/1002_still_safe.rb (limited to 'activerecord/test') diff --git a/activerecord/test/cases/ar_schema_test.rb b/activerecord/test/cases/ar_schema_test.rb index b2eac0349b..bd47ba8741 100644 --- a/activerecord/test/cases/ar_schema_test.rb +++ b/activerecord/test/cases/ar_schema_test.rb @@ -46,4 +46,55 @@ if ActiveRecord::Base.connection.supports_migrations? end end + class ActiveRecordSchemaMigrationsTest < ActiveRecordSchemaTest + def setup + super + ActiveRecord::SchemaMigration.delete_all + end + + def test_migration_adds_row_to_migrations_table + schema = ActiveRecord::Schema.new + schema.migration(1001, "", "") + schema.migration(1002, "123456789012345678901234567890ab", "add_magic_power_to_unicorns") + + migrations = ActiveRecord::SchemaMigration.all.to_a + assert_equal 2, migrations.length + + assert_equal 1001, migrations[0].version + assert_match %r{^2\d\d\d-}, migrations[0].migrated_at.to_s(:db) + assert_equal "", migrations[0].fingerprint + assert_equal "", migrations[0].name + + assert_equal 1002, migrations[1].version + assert_match %r{^2\d\d\d-}, migrations[1].migrated_at.to_s(:db) + assert_equal "123456789012345678901234567890ab", migrations[1].fingerprint + assert_equal "add_magic_power_to_unicorns", migrations[1].name + end + + def test_define_clears_schema_migrations + assert_nothing_raised do + ActiveRecord::Schema.define do + migrations do + migration(123001, "", "") + end + end + ActiveRecord::Schema.define do + migrations do + migration(123001, "", "") + end + end + end + end + + def test_define_raises_if_both_version_and_explicit_migrations + assert_raise(ArgumentError) do + ActiveRecord::Schema.define(version: 123001) do + migrations do + migration(123001, "", "") + end + end + end + end + end + end diff --git a/activerecord/test/cases/schema_dumper_test.rb b/activerecord/test/cases/schema_dumper_test.rb index 2f75eb0995..373463c8ab 100644 --- a/activerecord/test/cases/schema_dumper_test.rb +++ b/activerecord/test/cases/schema_dumper_test.rb @@ -1,5 +1,5 @@ require "cases/helper" - +# require "cases/migration/helper" class SchemaDumperTest < ActiveRecord::TestCase def setup @@ -18,11 +18,15 @@ class SchemaDumperTest < ActiveRecord::TestCase def test_dump_schema_information_outputs_lexically_ordered_versions versions = %w{ 20100101010101 20100201010101 20100301010101 } versions.reverse.each do |v| - ActiveRecord::SchemaMigration.create!(:version => v, :name => "anon", :migrated_at => Time.now) + ActiveRecord::SchemaMigration.create!( + :version => v, :migrated_at => Time.now, + :fingerprint => "123456789012345678901234567890ab", :name => "anon") end schema_info = ActiveRecord::Base.connection.dump_schema_information assert_match(/20100201010101.*20100301010101/m, schema_info) + target_line = %q{INSERT INTO schema_migrations (version, migrated_at, fingerprint, name) VALUES ('20100101010101',LOCALTIMESTAMP,'123456789012345678901234567890ab','anon');} + assert_match target_line, schema_info end def test_magic_comment @@ -36,6 +40,16 @@ class SchemaDumperTest < ActiveRecord::TestCase assert_no_match %r{create_table "schema_migrations"}, output end + def test_schema_dump_includes_migrations + ActiveRecord::SchemaMigration.delete_all + ActiveRecord::Migrator.migrate(MIGRATIONS_ROOT + "/always_safe") + + output = standard_dump + assert_match %r{migrations do}, output, "Missing migrations block" + assert_match %r{migration 1001, "[0-9a-f]{32}", "always_safe"}, output, "Missing migration line" + assert_match %r{migration 1002, "[0-9a-f]{32}", "still_safe"}, output, "Missing migration line" + end + def test_schema_dump_excludes_sqlite_sequence output = standard_dump assert_no_match %r{create_table "sqlite_sequence"}, output diff --git a/activerecord/test/migrations/always_safe/1001_always_safe.rb b/activerecord/test/migrations/always_safe/1001_always_safe.rb new file mode 100644 index 0000000000..454b972507 --- /dev/null +++ b/activerecord/test/migrations/always_safe/1001_always_safe.rb @@ -0,0 +1,5 @@ +class AlwaysSafe < ActiveRecord::Migration + def change + # do nothing to avoid side-effect conflicts from running multiple times + end +end diff --git a/activerecord/test/migrations/always_safe/1002_still_safe.rb b/activerecord/test/migrations/always_safe/1002_still_safe.rb new file mode 100644 index 0000000000..7398ae27a2 --- /dev/null +++ b/activerecord/test/migrations/always_safe/1002_still_safe.rb @@ -0,0 +1,5 @@ +class StillSafe < ActiveRecord::Migration + def change + # do nothing to avoid side-effect conflicts from running multiple times + end +end -- cgit v1.2.3