data_migrate 9.1.2 → 9.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (42) hide show
  1. checksums.yaml +4 -4
  2. data/.github/workflows/build.yml +1 -1
  3. data/.gitignore +0 -1
  4. data/Appraisals +5 -5
  5. data/Changelog.md +3 -7
  6. data/Gemfile.lock +148 -0
  7. data/README.md +3 -3
  8. data/data_migrate.gemspec +1 -1
  9. data/gemfiles/rails_6.1.gemfile +1 -1
  10. data/gemfiles/rails_6.1.gemfile.lock +227 -0
  11. data/gemfiles/rails_7.0.gemfile +1 -1
  12. data/gemfiles/rails_7.0.gemfile.lock +229 -0
  13. data/gemfiles/{rails_6.0.gemfile → rails_7.1.gemfile} +1 -1
  14. data/gemfiles/rails_7.1.gemfile.lock +262 -0
  15. data/lib/data_migrate/data_migrator.rb +11 -23
  16. data/lib/data_migrate/data_schema.rb +1 -1
  17. data/lib/data_migrate/data_schema_migration.rb +24 -7
  18. data/lib/data_migrate/database_tasks.rb +6 -16
  19. data/lib/data_migrate/migration_context.rb +11 -8
  20. data/lib/data_migrate/rails_helper.rb +79 -0
  21. data/lib/data_migrate/schema_dumper.rb +1 -1
  22. data/lib/data_migrate/schema_migration.rb +5 -4
  23. data/lib/data_migrate/status_service.rb +3 -3
  24. data/lib/data_migrate/tasks/data_migrate_tasks.rb +3 -3
  25. data/lib/data_migrate/version.rb +1 -1
  26. data/lib/data_migrate.rb +1 -1
  27. data/spec/data_migrate/data_migrator_spec.rb +16 -13
  28. data/spec/data_migrate/data_schema_migration_spec.rb +25 -8
  29. data/spec/data_migrate/data_spec.rb +1 -1
  30. data/spec/data_migrate/database_tasks_spec.rb +34 -18
  31. data/spec/data_migrate/migration_context_spec.rb +15 -8
  32. data/spec/data_migrate/schema_dumper_spec.rb +6 -3
  33. data/spec/data_migrate/schema_migration_spec.rb +13 -6
  34. data/spec/data_migrate/status_service_spec.rb +6 -3
  35. data/spec/data_migrate/tasks/data_migrate_tasks_spec.rb +8 -8
  36. data/spec/db/data/20091231235959_some_name.rb +1 -1
  37. data/spec/db/data/20171231235959_super_update.rb +1 -1
  38. data/spec/db/migrate/20131111111111_late_migration.rb +1 -1
  39. data/spec/db/migrate/20202020202011_db_migration.rb +1 -1
  40. metadata +13 -10
  41. data/lib/data_migrate/legacy_migrator.rb +0 -22
  42. data/spec/data_migrate/legacy_migrator_spec.rb +0 -38
@@ -11,7 +11,8 @@ module DataMigrate
11
11
  migrations
12
12
  end
13
13
 
14
- DataMigrator.new(:up, selected_migrations, target_version).migrate
14
+ data_migrator = DataMigrate::RailsHelper.data_migrator(:up, selected_migrations, DataMigrate::RailsHelper.schema_migration, DataMigrate::RailsHelper.internal_metadata, target_version)
15
+ data_migrator.migrate
15
16
  end
16
17
 
17
18
  def down(target_version = nil)
@@ -22,11 +23,13 @@ module DataMigrate
22
23
  migrations
23
24
  end
24
25
 
25
- DataMigrator.new(:down, selected_migrations, target_version).migrate
26
+ data_migrator = DataMigrate::RailsHelper.data_migrator(:down, selected_migrations, DataMigrate::RailsHelper.schema_migration, DataMigrate::RailsHelper.internal_metadata, target_version)
27
+ data_migrator.migrate
26
28
  end
27
29
 
28
30
  def run(direction, target_version)
29
- DataMigrator.new(direction, migrations, target_version).run
31
+ data_migrator = DataMigrate::RailsHelper.data_migrator(direction, migrations, DataMigrate::RailsHelper.schema_migration, DataMigrate::RailsHelper.internal_metadata, target_version)
32
+ data_migrator.run
30
33
  end
31
34
 
32
35
  def current_version
@@ -40,12 +43,12 @@ module DataMigrate
40
43
  end
41
44
 
42
45
  def migrations_status
43
- db_list = DataSchemaMigration.normalized_versions
46
+ db_list = DataMigrate::RailsHelper.data_schema_migration.normalized_versions
44
47
 
45
48
  file_list = migration_files.map do |file|
46
49
  version, name, scope = parse_migration_filename(file)
47
50
  raise ActiveRecord::IllegalMigrationNameError.new(file) unless version
48
- version = ActiveRecord::SchemaMigration.normalize_migration_number(version)
51
+ version = DataMigrate::RailsHelper.schema_migration.normalize_migration_number(version)
49
52
  status = db_list.delete(version) ? "up" : "down"
50
53
  [status, version, (name + scope).humanize]
51
54
  end.compact
@@ -60,15 +63,15 @@ module DataMigrate
60
63
  private
61
64
 
62
65
  def get_all_versions
63
- if DataMigrate::DataSchemaMigration.table_exists?
64
- DataSchemaMigration.normalized_versions.map(&:to_i)
66
+ if DataMigrate::RailsHelper.data_schema_migration.table_exists?
67
+ DataMigrate::RailsHelper.data_schema_migration.normalized_versions.map(&:to_i)
65
68
  else
66
69
  []
67
70
  end
68
71
  end
69
72
 
70
73
  def move(direction, steps)
71
- migrator = DataMigrator.new(direction, migrations)
74
+ migrator = DataMigrate::RailsHelper.data_migrator(direction, migrations)
72
75
 
73
76
  if current_version != 0 && !migrator.current_migration
74
77
  raise ActiveRecord::UnknownMigrationVersionError.new(current_version)
@@ -0,0 +1,79 @@
1
+ module DataMigrate
2
+ class RailsHelper
3
+ class << self
4
+ def rails_version_equal_to_or_higher_than_7_1
5
+ return @equal_to_or_higher_than_7_1 if defined?(@equal_to_or_higher_than_7_1)
6
+
7
+ @equal_to_or_higher_than_7_1 = Gem::Dependency.new("railties", ">= 7.1.0.alpha").match?("railties", Gem.loaded_specs["railties"].version, true)
8
+ end
9
+
10
+ def rails_version_equal_to_or_higher_than_7_0
11
+ return @rails_version_equal_to_or_higher_than_7_0 if defined?(@rails_version_equal_to_or_higher_than_7_0)
12
+
13
+ @rails_version_equal_to_or_higher_than_7_0 = Gem::Dependency.new("railties", ">= 7.0").match?("railties", Gem.loaded_specs["railties"].version, true)
14
+ end
15
+
16
+ def internal_metadata
17
+ if rails_version_equal_to_or_higher_than_7_1
18
+ ActiveRecord::Base.connection.internal_metadata
19
+ else
20
+ ActiveRecord::InternalMetadata
21
+ end
22
+ end
23
+
24
+ def schema_migration
25
+ if rails_version_equal_to_or_higher_than_7_1
26
+ ActiveRecord::Base.connection.schema_migration
27
+ else
28
+ ActiveRecord::SchemaMigration
29
+ end
30
+ end
31
+
32
+ def schema_migration_versions
33
+ if rails_version_equal_to_or_higher_than_7_1
34
+ schema_migration.versions
35
+ else
36
+ schema_migration.all.pluck(:version)
37
+ end
38
+ end
39
+
40
+ def schema_create_version(version)
41
+ if rails_version_equal_to_or_higher_than_7_1
42
+ schema_migration.create_version(version)
43
+ else
44
+ schema_migration.create(version: version)
45
+ end
46
+ end
47
+
48
+ def data_schema_delete_version(version)
49
+ if rails_version_equal_to_or_higher_than_7_1
50
+ data_schema_migration.delete_version(version)
51
+ else
52
+ data_schema_migration.where(version: version.to_s).delete_all
53
+ end
54
+ end
55
+
56
+ def data_schema_migration
57
+ if rails_version_equal_to_or_higher_than_7_1
58
+ DataMigrate::DataSchemaMigration.new(ActiveRecord::Tasks::DatabaseTasks.migration_connection)
59
+ else
60
+ DataMigrate::DataSchemaMigration
61
+ end
62
+ end
63
+
64
+ def data_migrator(
65
+ direction,
66
+ migrations,
67
+ schema_migration = DataMigrate::RailsHelper.schema_migration,
68
+ internal_metadata = DataMigrate::RailsHelper.internal_metadata,
69
+ target_version = nil
70
+ )
71
+ if rails_version_equal_to_or_higher_than_7_1
72
+ DataMigrate::DataMigrator.new(direction, migrations, schema_migration, internal_metadata, target_version)
73
+ else
74
+ DataMigrate::DataMigrator.new(direction, migrations, schema_migration, target_version)
75
+ end
76
+ end
77
+ end
78
+ end
79
+ end
@@ -26,7 +26,7 @@ module DataMigrate
26
26
 
27
27
  def initialize(connection)
28
28
  @connection = connection
29
- all_versions = DataSchemaMigration.normalized_versions
29
+ all_versions = DataMigrate::RailsHelper.data_schema_migration.normalized_versions
30
30
 
31
31
  @version = begin
32
32
  all_versions.max
@@ -7,14 +7,14 @@ module DataMigrate
7
7
  def self.pending_schema_migrations
8
8
  all_migrations = DataMigrate::MigrationContext.new(migrations_paths).migrations
9
9
  sort_migrations(
10
- ActiveRecord::Migrator.new(:up, all_migrations, ActiveRecord::Base.connection.schema_migration).
10
+ ActiveRecord::Migrator.new(:up, all_migrations, DataMigrate::RailsHelper.schema_migration, DataMigrate::RailsHelper.internal_metadata).
11
11
  pending_migrations.
12
12
  map {|m| { version: m.version, kind: :schema }}
13
13
  )
14
14
  end
15
15
 
16
16
  def self.run(direction, migration_paths, version)
17
- ActiveRecord::MigrationContext.new(migration_paths, ActiveRecord::Base.connection.schema_migration).run(direction, version)
17
+ ActiveRecord::MigrationContext.new(migration_paths, DataMigrate::RailsHelper.schema_migration).run(direction, version)
18
18
  end
19
19
 
20
20
  def self.sort_migrations(set1, set2 = nil)
@@ -24,9 +24,10 @@ module DataMigrate
24
24
 
25
25
  def self.migrations_paths
26
26
  spec_name = DataMigrate.config.spec_name
27
- if spec_name && Gem::Dependency.new("railties", "~> 7.0").match?("railties", Gem.loaded_specs["railties"].version)
27
+ # The positional argument true is to include pre-release versions, such as 7.1.0.alpha
28
+ if spec_name && Gem::Dependency.new("railties", ">= 7.0").match?("railties", Gem.loaded_specs["railties"].version, true)
28
29
  ActiveRecord::Base.configurations.configs_for(env_name: Rails.env, name: spec_name).migrations_paths
29
- elsif spec_name && Gem::Dependency.new("railties", "~> 6.0").match?("railties", Gem.loaded_specs["railties"].version)
30
+ elsif spec_name && Gem::Dependency.new("railties", "~> 6.1").match?("railties", Gem.loaded_specs["railties"].version)
30
31
  ActiveRecord::Base.configurations.configs_for(env_name: Rails.env, spec_name: spec_name).migrations_paths
31
32
  else
32
33
  Rails.application.config.paths["db/migrate"].to_a
@@ -24,11 +24,11 @@ module DataMigrate
24
24
  private
25
25
 
26
26
  def table_name
27
- DataMigrate::DataSchemaMigration.table_name
27
+ DataMigrate::RailsHelper.data_schema_migration.table_name
28
28
  end
29
29
 
30
30
  def output(stream)
31
- unless DataMigrate::DataSchemaMigration.table_exists?
31
+ unless DataMigrate::RailsHelper.data_schema_migration.table_exists?
32
32
  stream.puts "Data migrations table does not exist yet."
33
33
  return
34
34
  end
@@ -46,7 +46,7 @@ module DataMigrate
46
46
  def database_name
47
47
  if Gem::Dependency.new("railties", "~> 7.0").match?("railties", Gem.loaded_specs["railties"].version)
48
48
  ActiveRecord::Base.connection_db_config.configuration_hash[:database]
49
- elsif Gem::Dependency.new("railties", "~> 6.0").match?("railties", Gem.loaded_specs["railties"].version)
49
+ elsif Gem::Dependency.new("railties", "~> 6.1").match?("railties", Gem.loaded_specs["railties"].version)
50
50
  ActiveRecord::Base.connection_config[:database]
51
51
  end
52
52
  end
@@ -50,9 +50,9 @@ module DataMigrate
50
50
 
51
51
  def status_with_schema
52
52
  db_list_data = ActiveRecord::Base.connection.select_values(
53
- "SELECT version FROM #{DataMigrate::DataSchemaMigration.table_name}"
53
+ "SELECT version FROM #{DataMigrate::RailsHelper.data_schema_migration.table_name}"
54
54
  )
55
- db_list_schema = ActiveRecord::SchemaMigration.all.pluck(:version)
55
+ db_list_schema = DataMigrate::RailsHelper.schema_migration_versions
56
56
  file_list = []
57
57
 
58
58
  Dir.foreach(File.join(Rails.root, migrations_paths)) do |file|
@@ -96,7 +96,7 @@ module DataMigrate
96
96
  def database_name
97
97
  if Gem::Dependency.new("railties", "~> 7.0").match?("railties", Gem.loaded_specs["railties"].version)
98
98
  ActiveRecord::Base.connection_db_config.database
99
- elsif Gem::Dependency.new("railties", "~> 6.0").match?("railties", Gem.loaded_specs["railties"].version)
99
+ elsif Gem::Dependency.new("railties", "~> 6.1").match?("railties", Gem.loaded_specs["railties"].version)
100
100
  ActiveRecord::Base.connection_config[:database]
101
101
  end
102
102
  end
@@ -1,3 +1,3 @@
1
1
  module DataMigrate
2
- VERSION = "9.1.2".freeze
2
+ VERSION = "9.2.0".freeze
3
3
  end
data/lib/data_migrate.rb CHANGED
@@ -1,5 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
+ require File.join(File.dirname(__FILE__), "data_migrate", "rails_helper")
3
4
  require File.join(File.dirname(__FILE__), "data_migrate", "data_migrator")
4
5
  require File.join(File.dirname(__FILE__), "data_migrate", "data_schema_migration")
5
6
  require File.join(File.dirname(__FILE__), "data_migrate", "data_schema")
@@ -9,7 +10,6 @@ require File.join(File.dirname(__FILE__), "data_migrate", "status_service")
9
10
  require File.join(File.dirname(__FILE__), "data_migrate", "migration_context")
10
11
  require File.join(File.dirname(__FILE__), "data_migrate", "railtie")
11
12
  require File.join(File.dirname(__FILE__), "data_migrate", "tasks/data_migrate_tasks")
12
- require File.join(File.dirname(__FILE__), "data_migrate", "legacy_migrator")
13
13
  require File.join(File.dirname(__FILE__), "data_migrate", "config")
14
14
  require File.join(File.dirname(__FILE__), "data_migrate", "schema_migration")
15
15
 
@@ -3,7 +3,8 @@
3
3
  require "spec_helper"
4
4
 
5
5
  describe DataMigrate::DataMigrator do
6
- let(:subject) { DataMigrate::DataMigrator }
6
+ let(:described_class) { DataMigrate::DataMigrator }
7
+
7
8
  let(:db_config) do
8
9
  {
9
10
  adapter: "sqlite3",
@@ -13,8 +14,8 @@ describe DataMigrate::DataMigrator do
13
14
 
14
15
  before do
15
16
  ActiveRecord::Base.establish_connection(db_config)
16
- ::ActiveRecord::SchemaMigration.create_table
17
- DataMigrate::DataSchemaMigration.create_table
17
+ DataMigrate::RailsHelper.schema_migration.create_table
18
+ DataMigrate::RailsHelper.data_schema_migration.create_table
18
19
  end
19
20
 
20
21
  after do
@@ -23,12 +24,14 @@ describe DataMigrate::DataMigrator do
23
24
  end
24
25
 
25
26
  describe ".load_migrated" do
27
+ let(:migrator) { DataMigrate::RailsHelper.data_migrator(:up, []) }
28
+
26
29
  it "loads migrated versions" do
27
- DataMigrate::DataSchemaMigration.create(version: 20090000000000)
28
- ::ActiveRecord::SchemaMigration.create(version: 20100000000000)
29
- DataMigrate::DataSchemaMigration.create(version: 20110000000000)
30
- ::ActiveRecord::SchemaMigration.create(version: 20120000000000)
31
- migrated = subject.new(:up, []).load_migrated
30
+ DataMigrate::RailsHelper.data_schema_migration.create_version(20090000000000)
31
+ DataMigrate::RailsHelper.schema_create_version(20100000000000)
32
+ DataMigrate::RailsHelper.data_schema_migration.create_version(20110000000000)
33
+ DataMigrate::RailsHelper.schema_create_version(20120000000000)
34
+ migrated = migrator.load_migrated
32
35
  expect(migrated.count).to eq 2
33
36
  expect(migrated).to include 20090000000000
34
37
  expect(migrated).to include 20110000000000
@@ -38,7 +41,7 @@ describe DataMigrate::DataMigrator do
38
41
  describe :create_data_schema_table do
39
42
  it "creates the data_migrations table" do
40
43
  ActiveRecord::Migration.drop_table("data_migrations") rescue nil
41
- subject.create_data_schema_table
44
+ described_class.create_data_schema_table
42
45
  expect(
43
46
  ActiveRecord::Base.connection.table_exists?("data_migrations")
44
47
  ).to eq true
@@ -47,7 +50,7 @@ describe DataMigrate::DataMigrator do
47
50
 
48
51
  describe "#migrations_status" do
49
52
  it "returns all migrations statuses" do
50
- status = subject.migrations_status
53
+ status = described_class.migrations_status
51
54
  expect(status.length).to eq 2
52
55
  expect(status.first).to eq ["down", "20091231235959", "Some name"]
53
56
  expect(status.second).to eq ["down", "20171231235959", "Super update"]
@@ -57,19 +60,19 @@ describe DataMigrate::DataMigrator do
57
60
  describe :match do
58
61
  context "when the file does not match" do
59
62
  it "returns nil" do
60
- expect(subject.match("not_a_data_migration_file")).to be_nil
63
+ expect(described_class.match("not_a_data_migration_file")).to be_nil
61
64
  end
62
65
  end
63
66
 
64
67
  context "when the file doesn't end in .rb" do
65
68
  it "returns nil" do
66
- expect(subject.match("20091231235959_some_name.rb.un~")).to be_nil
69
+ expect(described_class.match("20091231235959_some_name.rb.un~")).to be_nil
67
70
  end
68
71
  end
69
72
 
70
73
  context "when the file matches" do
71
74
  it "returns a valid MatchData object" do
72
- match_data = subject.match("20091231235959_some_name.rb")
75
+ match_data = described_class.match("20091231235959_some_name.rb")
73
76
 
74
77
  expect(match_data[0]).to eq "20091231235959_some_name.rb"
75
78
  expect(match_data[1]).to eq "20091231235959"
@@ -1,16 +1,33 @@
1
1
  require 'spec_helper'
2
2
 
3
3
  describe DataMigrate::DataSchemaMigration do
4
- let(:subject) { DataMigrate::DataSchemaMigration }
5
- describe :table_name do
6
- it "returns correct table name" do
7
- expect(subject.table_name).to eq("data_migrations")
4
+ if DataMigrate::RailsHelper.rails_version_equal_to_or_higher_than_7_1
5
+ let(:connection) { double(:connection) }
6
+ let(:subject) { DataMigrate::DataSchemaMigration.new(connection) }
7
+
8
+ describe :table_name do
9
+ it "returns correct table name" do
10
+ expect(subject.table_name).to eq("data_migrations")
11
+ end
12
+ end
13
+
14
+ describe :index_name do
15
+ it "returns correct primary key name" do
16
+ expect(subject.primary_key).to eq("version")
17
+ end
18
+ end
19
+ else
20
+ let(:subject) { DataMigrate::DataSchemaMigration }
21
+ describe :table_name do
22
+ it "returns correct table name" do
23
+ expect(subject.table_name).to eq("data_migrations")
24
+ end
8
25
  end
9
- end
10
26
 
11
- describe :index_name do
12
- it "returns correct primary key name" do
13
- expect(subject.primary_key).to eq("version")
27
+ describe :index_name do
28
+ it "returns correct primary key name" do
29
+ expect(subject.primary_key).to eq("version")
30
+ end
14
31
  end
15
32
  end
16
33
  end
@@ -55,7 +55,7 @@ describe DataMigrate::Data do
55
55
 
56
56
  sql_select = <<-SQL
57
57
  SELECT version
58
- FROM #{DataMigrate::DataSchemaMigration.table_name}
58
+ FROM #{DataMigrate::RailsHelper.data_schema_migration.table_name}
59
59
  SQL
60
60
 
61
61
  db_list_data = ActiveRecord::Base.connection.
@@ -8,12 +8,6 @@ describe DataMigrate::DatabaseTasks do
8
8
  let(:data_migrations_path) {
9
9
  DataMigrate.config.data_migrations_path
10
10
  }
11
- let(:db_config) do
12
- {
13
- adapter: "sqlite3",
14
- database: "spec/db/test.db"
15
- }
16
- end
17
11
 
18
12
  before do
19
13
  # In a normal Rails installation, db_dir would defer to
@@ -27,14 +21,10 @@ describe DataMigrate::DatabaseTasks do
27
21
  allow(DataMigrate::Tasks::DataMigrateTasks).to receive(:migrations_paths) {
28
22
  data_migrations_path
29
23
  }
30
- ActiveRecord::Base.establish_connection(db_config)
31
- if Gem::Dependency.new("railties", ">= 6.1").match?("railties", Gem.loaded_specs["railties"].version)
32
- hash_config = ActiveRecord::DatabaseConfigurations::HashConfig.new('test', 'test', db_config)
33
- config_obj = ActiveRecord::DatabaseConfigurations.new([hash_config])
34
- allow(ActiveRecord::Base).to receive(:configurations).and_return(config_obj)
35
- else
36
- ActiveRecord::Base.configurations[:test] = db_config
37
- end
24
+ ActiveRecord::Base.establish_connection({ adapter: "sqlite3", database: "spec/db/test.db" })
25
+ hash_config = ActiveRecord::DatabaseConfigurations::HashConfig.new('test', 'test', { adapter: "sqlite3", database: "spec/db/test.db" })
26
+ config_obj = ActiveRecord::DatabaseConfigurations.new([hash_config])
27
+ allow(ActiveRecord::Base).to receive(:configurations).and_return(config_obj)
38
28
  end
39
29
 
40
30
  context "migrations" do
@@ -44,7 +34,7 @@ describe DataMigrate::DatabaseTasks do
44
34
  end
45
35
 
46
36
  before do
47
- ActiveRecord::SchemaMigration.create_table
37
+ DataMigrate::RailsHelper.schema_migration.create_table
48
38
 
49
39
  allow(DataMigrate::SchemaMigration).to receive(:migrations_paths) {
50
40
  migration_path
@@ -71,19 +61,45 @@ describe DataMigrate::DatabaseTasks do
71
61
  describe :forward do
72
62
  it "run forward default amount of times" do
73
63
  subject.forward
74
- versions = DataMigrate::DataSchemaMigration.normalized_versions
64
+ versions = DataMigrate::RailsHelper.data_schema_migration.normalized_versions
75
65
  expect(versions.count).to eq(1)
76
66
  end
77
67
 
78
68
  it "run forward defined number of times" do
79
69
  subject.forward(2)
80
- versions = DataMigrate::DataSchemaMigration.normalized_versions
70
+ versions = DataMigrate::RailsHelper.data_schema_migration.normalized_versions
81
71
  expect(versions.count).to eq(1)
82
72
  expect(versions.first).to eq "20091231235959"
83
- versions = ActiveRecord::SchemaMigration.normalized_versions
73
+ versions = DataMigrate::RailsHelper.schema_migration.normalized_versions
84
74
  expect(versions.count).to eq(1)
85
75
  expect(versions.first).to eq "20131111111111"
86
76
  end
87
77
  end
78
+
79
+ if DataMigrate::RailsHelper.rails_version_equal_to_or_higher_than_7_0
80
+ describe :schema_dump_path do
81
+ before do
82
+ allow(ActiveRecord::Base).to receive(:configurations).and_return(ActiveRecord::DatabaseConfigurations.new([db_config]))
83
+ end
84
+
85
+ context "for primary database" do
86
+ let(:db_config) { ActiveRecord::DatabaseConfigurations::HashConfig.new("development", "primary", {} ) }
87
+
88
+ context "for :ruby db format" do
89
+ it 'returns the data schema path' do
90
+ allow(ActiveRecord).to receive(:schema_format).and_return(:ruby)
91
+ expect(subject.schema_dump_path(db_config)).to eq("db/data_schema.rb")
92
+ end
93
+ end
94
+
95
+ context "for :sql db format" do
96
+ it 'returns the data schema path' do
97
+ allow(ActiveRecord).to receive(:schema_format).and_return(:sql)
98
+ expect(subject.schema_dump_path(db_config, :sql)).to eq("db/data_schema.rb")
99
+ end
100
+ end
101
+ end
102
+ end
103
+ end
88
104
  end
89
105
  end
@@ -5,10 +5,17 @@ require "spec_helper"
5
5
  describe DataMigrate::DataMigrator do
6
6
  let(:context) { DataMigrate::MigrationContext.new("spec/db/data") }
7
7
  let(:schema_context) { ActiveRecord::MigrationContext.new("spec/db/migrate", ActiveRecord::Base.connection.schema_migration) }
8
+ let(:db_config) do
9
+ {
10
+ adapter: "sqlite3",
11
+ database: "spec/db/test.db"
12
+ }
13
+ end
8
14
 
9
15
  before do
10
- ActiveRecord::SchemaMigration.create_table
11
- DataMigrate::DataSchemaMigration.create_table
16
+ ActiveRecord::Base.establish_connection(db_config)
17
+ DataMigrate::RailsHelper.schema_migration.create_table
18
+ DataMigrate::RailsHelper.data_schema_migration.create_table
12
19
  end
13
20
 
14
21
  after do
@@ -20,7 +27,7 @@ describe DataMigrate::DataMigrator do
20
27
  it "migrates existing file" do
21
28
  context.migrate(nil)
22
29
  context.migrations_status
23
- versions = DataMigrate::DataSchemaMigration.normalized_versions
30
+ versions = DataMigrate::RailsHelper.data_schema_migration.normalized_versions
24
31
  expect(versions.count).to eq(2)
25
32
  expect(versions).to include("20091231235959")
26
33
  expect(versions).to include("20171231235959")
@@ -29,7 +36,7 @@ describe DataMigrate::DataMigrator do
29
36
  it "undo migration" do
30
37
  context.migrate(nil)
31
38
  context.run(:down, 20171231235959)
32
- versions = DataMigrate::DataSchemaMigration.normalized_versions
39
+ versions = DataMigrate::RailsHelper.data_schema_migration.normalized_versions
33
40
  expect(versions.count).to eq(1)
34
41
  expect(versions).to include("20091231235959")
35
42
  end
@@ -46,7 +53,7 @@ describe DataMigrate::DataMigrator do
46
53
 
47
54
  it "runs a specific migration" do
48
55
  context.run(:up, 20171231235959)
49
- versions = DataMigrate::DataSchemaMigration.normalized_versions
56
+ versions = DataMigrate::RailsHelper.data_schema_migration.normalized_versions
50
57
  expect(versions.count).to eq(1)
51
58
  expect(versions).to include("20171231235959")
52
59
  end
@@ -74,7 +81,7 @@ describe DataMigrate::DataMigrator do
74
81
  expect {
75
82
  context.rollback
76
83
  }.to output(/Undoing SuperUpdate/).to_stdout
77
- versions = DataMigrate::DataSchemaMigration.normalized_versions
84
+ versions = DataMigrate::RailsHelper.data_schema_migration.normalized_versions
78
85
  expect(versions.count).to eq(1)
79
86
  expect(versions).to include("20091231235959")
80
87
  end
@@ -85,7 +92,7 @@ describe DataMigrate::DataMigrator do
85
92
  expect {
86
93
  context.rollback(2)
87
94
  }.to output(/Undoing SomeName/).to_stdout
88
- versions = DataMigrate::DataSchemaMigration.normalized_versions
95
+ versions = DataMigrate::RailsHelper.data_schema_migration.normalized_versions
89
96
  expect(versions.count).to eq(0)
90
97
  end
91
98
 
@@ -94,7 +101,7 @@ describe DataMigrate::DataMigrator do
94
101
  expect {
95
102
  context.rollback(2)
96
103
  }.to output(/Undoing SomeName/).to_stdout
97
- versions = DataMigrate::DataSchemaMigration.normalized_versions
104
+ versions = DataMigrate::RailsHelper.data_schema_migration.normalized_versions
98
105
  expect(versions.count).to eq(0)
99
106
  end
100
107
  end
@@ -9,9 +9,12 @@ describe DataMigrate::SchemaDumper do
9
9
  end
10
10
 
11
11
  before do
12
- ActiveRecord::SchemaMigration.create_table
13
- DataMigrate::DataSchemaMigration.create_table
14
- DataMigrate::DataSchemaMigration.create(fixture_file_timestamps.map { |t| { version: t } })
12
+ DataMigrate::RailsHelper.schema_migration.create_table
13
+ DataMigrate::RailsHelper.data_schema_migration.create_table
14
+
15
+ fixture_file_timestamps.map do |t|
16
+ DataMigrate::RailsHelper.data_schema_migration.create_version(t)
17
+ end
15
18
  end
16
19
 
17
20
  after do
@@ -8,10 +8,17 @@ describe DataMigrate::SchemaMigration do
8
8
  let(:fixture_file_timestamps) do
9
9
  %w[20091231235959 20101231235959 20111231235959]
10
10
  end
11
+ let(:db_config) do
12
+ {
13
+ adapter: "sqlite3",
14
+ database: "spec/db/test.db"
15
+ }
16
+ end
11
17
 
12
18
  before do
13
- ActiveRecord::SchemaMigration.create_table
14
- DataMigrate::DataSchemaMigration.create_table
19
+ ActiveRecord::Base.establish_connection(db_config)
20
+ DataMigrate::RailsHelper.schema_migration.create_table
21
+ DataMigrate::RailsHelper.data_schema_migration.create_table
15
22
  end
16
23
 
17
24
  after do
@@ -38,7 +45,7 @@ describe DataMigrate::SchemaMigration do
38
45
  expect {
39
46
  subject.run(:up, migration_path, 20202020202011)
40
47
  }.to output(/20202020202011 DbMigration: migrating/).to_stdout
41
- versions = ActiveRecord::SchemaMigration.normalized_versions
48
+ versions = DataMigrate::RailsHelper.schema_migration.normalized_versions
42
49
  expect(versions.first).to eq("20202020202011")
43
50
  end
44
51
 
@@ -49,7 +56,7 @@ describe DataMigrate::SchemaMigration do
49
56
  subject.run(:down, migration_path, 20202020202011)
50
57
  }.to output(/Undoing DbMigration/).to_stdout
51
58
 
52
- versions = ActiveRecord::SchemaMigration.normalized_versions
59
+ versions = DataMigrate::RailsHelper.schema_migration.normalized_versions
53
60
 
54
61
  expect(versions.count).to eq(0)
55
62
  end
@@ -61,9 +68,9 @@ describe DataMigrate::SchemaMigration do
61
68
  let(:paths) { ['spec/db/migrate', 'spec/db/migrate/other'] }
62
69
  let(:specification_name) { "primary" }
63
70
  let(:config_options) do
64
- if Gem::Dependency.new("railties", "~> 6.0").match?("railties", Gem.loaded_specs["railties"].version)
71
+ if Gem::Dependency.new("railties", "~> 6.1").match?("railties", Gem.loaded_specs["railties"].version)
65
72
  { env_name: Rails.env, spec_name: specification_name }
66
- elsif Gem::Dependency.new("railties", "~> 7.0").match?("railties", Gem.loaded_specs["railties"].version)
73
+ else
67
74
  { env_name: Rails.env, name: specification_name }
68
75
  end
69
76
  end
@@ -33,9 +33,12 @@ describe DataMigrate::StatusService do
33
33
  end
34
34
 
35
35
  before do
36
- ActiveRecord::SchemaMigration.create_table
37
- DataMigrate::DataSchemaMigration.create_table
38
- DataMigrate::DataSchemaMigration.create(fixture_file_timestamps.map { |t| { version: t } })
36
+ DataMigrate::RailsHelper.schema_migration.create_table
37
+ DataMigrate::RailsHelper.data_schema_migration.create_table
38
+
39
+ fixture_file_timestamps.map do |t|
40
+ DataMigrate::RailsHelper.data_schema_migration.create_version(t)
41
+ end
39
42
 
40
43
  subject.dump(connection_db_config, stream)
41
44
  stream.rewind
@@ -3,17 +3,17 @@
3
3
  require "spec_helper"
4
4
 
5
5
  describe DataMigrate::Tasks::DataMigrateTasks do
6
- let(:connection_db_config) do
7
- if Gem::Dependency.new("railties", ">= 6.1").match?("railties", Gem.loaded_specs["railties"].version)
8
- ActiveRecord::Base.connection_db_config
9
- else
10
- ActiveRecord::Base.configurations.configs_for.first
11
- end
6
+ let(:db_config) do
7
+ {
8
+ adapter: "sqlite3",
9
+ database: "spec/db/test.db"
10
+ }
12
11
  end
13
12
 
14
13
  before do
15
- ActiveRecord::SchemaMigration.create_table
16
- DataMigrate::DataSchemaMigration.create_table
14
+ ActiveRecord::Base.establish_connection(db_config)
15
+ DataMigrate::RailsHelper.schema_migration.create_table
16
+ DataMigrate::RailsHelper.data_schema_migration.create_table
17
17
  end
18
18
 
19
19
  after do
@@ -1,4 +1,4 @@
1
- class SomeName < ActiveRecord::Migration[6.0]
1
+ class SomeName < ActiveRecord::Migration[6.1]
2
2
  def up
3
3
  puts "Doing data migration"
4
4
  end