data_migrate 11.1.0 → 11.3.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 (59) hide show
  1. checksums.yaml +4 -4
  2. data/Changelog.md +11 -0
  3. data/README.md +13 -18
  4. data/lib/data_migrate/config.rb +2 -1
  5. data/lib/data_migrate/data_migrator.rb +0 -1
  6. data/lib/data_migrate/data_schema_migration.rb +2 -2
  7. data/lib/data_migrate/database_tasks.rb +14 -4
  8. data/lib/data_migrate/rails_helper.rb +1 -0
  9. data/lib/data_migrate/version.rb +1 -1
  10. metadata +5 -54
  11. data/.github/workflows/build.yml +0 -39
  12. data/.github/workflows/gempush.yml +0 -28
  13. data/.gitignore +0 -12
  14. data/.hound.yml +0 -4
  15. data/.overcommit.yml +0 -21
  16. data/.rbenv-gemsets +0 -2
  17. data/.rspec +0 -3
  18. data/.rubocop.yml +0 -2
  19. data/.ruby-style.yml +0 -1061
  20. data/Appraisals +0 -19
  21. data/Gemfile +0 -3
  22. data/Gemfile.lock +0 -192
  23. data/Rakefile +0 -2
  24. data/data_migrate.gemspec +0 -41
  25. data/gemfiles/rails_6.1.gemfile +0 -7
  26. data/gemfiles/rails_6.1.gemfile.lock +0 -237
  27. data/gemfiles/rails_7.0.gemfile +0 -7
  28. data/gemfiles/rails_7.0.gemfile.lock +0 -238
  29. data/gemfiles/rails_7.1.gemfile +0 -7
  30. data/gemfiles/rails_7.1.gemfile.lock +0 -277
  31. data/gemfiles/rails_7.2.gemfile +0 -7
  32. data/gemfiles/rails_7.2.gemfile.lock +0 -274
  33. data/gemfiles/rails_8.0.gemfile +0 -7
  34. data/gemfiles/rails_8.0.gemfile.lock +0 -268
  35. data/screenshot.png +0 -0
  36. data/spec/data_migrate/config_spec.rb +0 -69
  37. data/spec/data_migrate/data_migrator_spec.rb +0 -84
  38. data/spec/data_migrate/data_schema_migration_spec.rb +0 -33
  39. data/spec/data_migrate/data_spec.rb +0 -74
  40. data/spec/data_migrate/database_tasks_spec.rb +0 -214
  41. data/spec/data_migrate/migration.rb +0 -17
  42. data/spec/data_migrate/migration_context_spec.rb +0 -117
  43. data/spec/data_migrate/schema_dumper_spec.rb +0 -36
  44. data/spec/data_migrate/schema_migration_spec.rb +0 -104
  45. data/spec/data_migrate/status_service_spec.rb +0 -76
  46. data/spec/data_migrate/tasks/data_migrate_tasks_spec.rb +0 -129
  47. data/spec/db/data/20091231235959_some_name.rb +0 -9
  48. data/spec/db/data/20171231235959_super_update.rb +0 -9
  49. data/spec/db/data/20181128000207_excluded_file.rb.other_ext +0 -1
  50. data/spec/db/data/partial_schema/data_schema.rb +0 -1
  51. data/spec/db/data/partial_schema/test_data_schema.rb +0 -1
  52. data/spec/db/data/schema/data_schema.rb +0 -1
  53. data/spec/db/data/schema/test_data_schema.rb +0 -1
  54. data/spec/db/data_two/20241231235959_data_two_update.rb +0 -9
  55. data/spec/db/migrate/20131111111111_late_migration.rb +0 -9
  56. data/spec/db/migrate/20202020202011_db_migration.rb +0 -9
  57. data/spec/generators/data_migration/data_migration_generator_spec.rb +0 -101
  58. data/spec/spec_helper.rb +0 -28
  59. data/tasks/.gitkeep +0 -0
@@ -1,33 +0,0 @@
1
- require 'spec_helper'
2
-
3
- describe DataMigrate::DataSchemaMigration do
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
25
- end
26
-
27
- describe :index_name do
28
- it "returns correct primary key name" do
29
- expect(subject.primary_key).to eq("version")
30
- end
31
- end
32
- end
33
- end
@@ -1,74 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require "spec_helper"
4
-
5
- describe DataMigrate::Data do
6
- let(:subject) { DataMigrate::Data }
7
- let(:fixture_file_timestamps) do
8
- %w[20091231235959 20101231235959 20111231235959]
9
- end
10
-
11
- around do |example|
12
- Dir.mktmpdir do |temp_dir|
13
- @temp_dir = temp_dir
14
-
15
- # create the fake data migration files
16
- fixture_file_timestamps.each do |timestamp|
17
- FileUtils.touch File.join(temp_dir, "#{timestamp}_data_migration.rb")
18
- end
19
-
20
- example.run
21
- end
22
- end
23
-
24
- describe :define do
25
- after do
26
- ActiveRecord::Migration.drop_table("data_migrations")
27
- end
28
-
29
- context "when no version is supplied" do
30
- it "returns nil" do
31
- expect(subject.define(version: nil)).to be_nil
32
- end
33
- end
34
-
35
- context "when a version is supplied" do
36
- before do
37
- allow(DataMigrate::DataMigrator).
38
- to receive(:full_migrations_path).and_return(@temp_dir)
39
- end
40
-
41
- it "sets the current version to the supplied version" do
42
- version = fixture_file_timestamps[1]
43
-
44
- expect(DataMigrate::DataMigrator.current_version).not_to eq version.to_i
45
- subject.define(version: version)
46
- expect(DataMigrate::DataMigrator.current_version).to eq version.to_i
47
- end
48
-
49
- it "creates entries for migration versions that come " \
50
- "before the supplied version" do
51
-
52
- version = fixture_file_timestamps[1]
53
-
54
- subject.define(version: version)
55
-
56
- sql_select = <<-SQL
57
- SELECT version
58
- FROM #{DataMigrate::RailsHelper.data_schema_migration.table_name}
59
- SQL
60
-
61
- db_list_data = ActiveRecord::Base.connection.
62
- select_values(sql_select).map(&:to_i)
63
- expect(db_list_data).to match_array(
64
- [fixture_file_timestamps[0], fixture_file_timestamps[1]].map(&:to_i)
65
- )
66
-
67
- # The last remaining migration (fixture_file_timestamps[2]) was
68
- # not included as part of the supplied version and so should not
69
- # appear in the data_migrations table.
70
- expect(db_list_data).not_to include(fixture_file_timestamps[2])
71
- end
72
- end
73
- end
74
- end
@@ -1,214 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require "spec_helper"
4
-
5
- describe DataMigrate::DatabaseTasks do
6
- let(:subject) { DataMigrate::DatabaseTasks }
7
- let(:migration_path) { "spec/db/migrate" }
8
- let(:data_migrations_path) { DataMigrate.config.data_migrations_path }
9
-
10
- before do
11
- # In a normal Rails installation, db_dir would defer to
12
- # Rails.application.config.paths["db"].first
13
- # @see https://github.com/rails/rails/blob/a7d49ef78c36df2d1ca876451f30915ada1079a5/activerecord/lib/active_record/tasks/database_tasks.rb#L54
14
- allow(subject).to receive(:db_dir).and_return("db")
15
- allow(ActiveRecord::Tasks::DatabaseTasks).to receive(:db_dir).and_return("db")
16
- end
17
-
18
- before do
19
- allow(DataMigrate::Tasks::DataMigrateTasks).to receive(:migrations_paths) do
20
- data_migrations_path
21
- end
22
- ActiveRecord::Base.establish_connection(adapter: "sqlite3", database: "spec/db/test.db")
23
- hash_config = ActiveRecord::DatabaseConfigurations::HashConfig.new(
24
- 'test', 'test', adapter: "sqlite3", database: "spec/db/test.db"
25
- )
26
- config_obj = ActiveRecord::DatabaseConfigurations.new([hash_config])
27
- allow(ActiveRecord::Base).to receive(:configurations).and_return(config_obj)
28
- end
29
-
30
- context "migrations" do
31
- after do
32
- ActiveRecord::Migration.drop_table("data_migrations") rescue nil
33
- ActiveRecord::Migration.drop_table("schema_migrations") rescue nil
34
- end
35
-
36
- before do
37
- DataMigrate::RailsHelper.schema_migration.create_table
38
-
39
- allow(DataMigrate::SchemaMigration).to receive(:migrations_paths) { migration_path }
40
- allow(DataMigrate::DatabaseTasks).to receive(:data_migrations_path) do
41
- data_migrations_path
42
- end.at_least(:once)
43
- end
44
-
45
- describe :past_migrations do
46
- it "returns past migration records" do
47
- subject.forward
48
- migrations = subject.past_migrations
49
- expect(migrations.count).to eq 1
50
- expect(migrations.first[:version]).to eq 20091231235959
51
- end
52
-
53
- it "shows nothing without any migrations" do
54
- migrations = subject.past_migrations
55
- expect(migrations.count).to eq 0
56
- end
57
- end
58
-
59
- describe :forward do
60
- it "run forward default amount of times" do
61
- subject.forward
62
- versions = DataMigrate::RailsHelper.data_schema_migration.normalized_versions
63
- expect(versions.count).to eq(1)
64
- end
65
-
66
- it "run forward defined number of times" do
67
- subject.forward(2)
68
- versions = DataMigrate::RailsHelper.data_schema_migration.normalized_versions
69
- expect(versions.count).to eq(1)
70
- expect(versions.first).to eq "20091231235959"
71
- versions = DataMigrate::RailsHelper.schema_migration.normalized_versions
72
- expect(versions.count).to eq(1)
73
- expect(versions.first).to eq "20131111111111"
74
- end
75
- end
76
-
77
- if DataMigrate::RailsHelper.rails_version_equal_to_or_higher_than_7_0
78
- describe :schema_dump_path do
79
- before do
80
- allow(ActiveRecord::Base).to receive(:configurations)
81
- .and_return(ActiveRecord::DatabaseConfigurations.new([db_config]))
82
- end
83
-
84
- context "for primary database" do
85
- let(:db_config) do
86
- ActiveRecord::DatabaseConfigurations::HashConfig.new("development", "primary", {})
87
- end
88
-
89
- context "for :ruby db format" do
90
- it 'returns the data schema path' do
91
- allow(ActiveRecord).to receive(:schema_format).and_return(:ruby)
92
- expect(subject.schema_dump_path(db_config)).to eq("db/data_schema.rb")
93
- end
94
- end
95
-
96
- context "for :sql db format" do
97
- it 'returns the data schema path' do
98
- allow(ActiveRecord).to receive(:schema_format).and_return(:sql)
99
- expect(subject.schema_dump_path(db_config, :sql)).to eq("db/data_schema.rb")
100
- end
101
- end
102
- end
103
- end
104
- end
105
-
106
- describe :prepare_all_with_data do
107
- let(:db_config) do
108
- ActiveRecord::DatabaseConfigurations::HashConfig.new(
109
- 'test',
110
- 'primary',
111
- adapter: "sqlite3",
112
- database: "spec/db/test.db"
113
- )
114
- end
115
-
116
- let(:pool) { double("ConnectionPool") }
117
- let(:connection) { double("Connection") }
118
-
119
- before do
120
- allow(subject).to receive(:each_current_configuration).and_yield(db_config)
121
- allow(subject).to receive(:with_temporary_pool).with(db_config).and_yield(pool)
122
- allow(pool).to receive(:connection).and_return(connection)
123
- allow(subject).to receive(:schema_dump_path).and_return("db/data_schema.rb")
124
- allow(File).to receive(:exist?).and_return(true)
125
- allow(subject).to receive(:load_schema)
126
- allow(subject).to receive(:load_schema_current)
127
- allow(subject).to receive(:migrate_with_data)
128
- allow(subject).to receive(:dump_schema)
129
- allow(DataMigrate::Tasks::DataMigrateTasks).to receive(:dump)
130
- allow(subject).to receive(:load_seed)
131
-
132
- configurations = ActiveRecord::DatabaseConfigurations.new([db_config])
133
- allow(ActiveRecord::Base).to receive(:configurations).and_return(configurations)
134
- end
135
-
136
- context "when the database does not exist" do
137
- before do
138
- allow(subject).to receive(:database_exists?).with(connection).and_return(false)
139
- allow_any_instance_of(ActiveRecord::Tasks::DatabaseTasks).to receive(:create)
140
- .and_return(true)
141
- end
142
-
143
- it "creates the database" do
144
- expect_any_instance_of(ActiveRecord::Tasks::DatabaseTasks).to receive(:create)
145
- .with(db_config)
146
- subject.prepare_all_with_data
147
- end
148
-
149
- it "loads the schema" do
150
- expect(subject).to receive(:load_schema).with(
151
- db_config,
152
- subject.send(:schema_format),
153
- nil
154
- )
155
- subject.prepare_all_with_data
156
- end
157
-
158
- it "loads the current data schema" do
159
- expect(subject).to receive(:load_schema_current).with(:ruby, ENV["DATA_SCHEMA"])
160
- subject.prepare_all_with_data
161
- end
162
-
163
- it "runs migrations with data" do
164
- expect(subject).to receive(:migrate_with_data)
165
- subject.prepare_all_with_data
166
- end
167
-
168
- it "dumps the schema after migration" do
169
- expect(subject).to receive(:dump_schema).with(db_config)
170
- expect(DataMigrate::Tasks::DataMigrateTasks).to receive(:dump)
171
- subject.prepare_all_with_data
172
- end
173
-
174
- it "loads seed data" do
175
- expect(subject).to receive(:load_seed)
176
- subject.prepare_all_with_data
177
- end
178
- end
179
-
180
- context "when the database exists" do
181
- before do
182
- allow(subject).to receive(:database_exists?).with(connection).and_return(true)
183
- end
184
-
185
- it "does not create the database" do
186
- expect(ActiveRecord::Tasks::DatabaseTasks).not_to receive(:create)
187
- subject.prepare_all_with_data
188
- end
189
-
190
- it "does not load the schema" do
191
- expect(subject).not_to receive(:load_schema)
192
- expect(subject).not_to receive(:load_schema_current)
193
- subject.prepare_all_with_data
194
- end
195
-
196
- it "runs migrations with data" do
197
- expect(subject).to receive(:migrate_with_data)
198
- subject.prepare_all_with_data
199
- end
200
-
201
- it "dumps the schema after migration" do
202
- expect(subject).to receive(:dump_schema).with(db_config)
203
- expect(DataMigrate::Tasks::DataMigrateTasks).to receive(:dump)
204
- subject.prepare_all_with_data
205
- end
206
-
207
- it "does not load seed data" do
208
- expect(subject).not_to receive(:load_seed)
209
- subject.prepare_all_with_data
210
- end
211
- end
212
- end
213
- end
214
- end
@@ -1,17 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'spec_helper'
4
-
5
- describe DataMigrate::Migration do
6
- describe ".table_name" do
7
- it "returns correct table name" do
8
- expect(subject.table_name).to eq("data_migrations")
9
- end
10
- end
11
-
12
- describe ".index_name" do
13
- it "returns correct primary key name" do
14
- expect(subject.primary_key).to eq("version")
15
- end
16
- end
17
- end
@@ -1,117 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require "spec_helper"
4
-
5
- describe DataMigrate::DataMigrator do
6
- let(:context) { DataMigrate::MigrationContext.new("spec/db/data") }
7
- let(:schema_context) { ActiveRecord::MigrationContext.new("spec/db/migrate", ar_schema_migration) }
8
- let(:db_config) do
9
- {
10
- adapter: "sqlite3",
11
- database: "spec/db/test.db"
12
- }
13
- end
14
-
15
- before do
16
- ActiveRecord::Base.establish_connection(db_config)
17
- DataMigrate::RailsHelper.schema_migration.create_table
18
- DataMigrate::RailsHelper.data_schema_migration.create_table
19
- end
20
-
21
- after do
22
- ActiveRecord::Migration.drop_table("data_migrations") rescue nil
23
- ActiveRecord::Migration.drop_table("schema_migrations") rescue nil
24
- end
25
-
26
- describe "migrate" do
27
- it "migrates existing file" do
28
- context.migrate(nil)
29
- context.migrations_status
30
- versions = DataMigrate::RailsHelper.data_schema_migration.normalized_versions
31
- expect(versions.count).to eq(2)
32
- expect(versions).to include("20091231235959")
33
- expect(versions).to include("20171231235959")
34
- end
35
-
36
- it "undo migration" do
37
- context.migrate(nil)
38
- context.run(:down, 20171231235959)
39
- versions = DataMigrate::RailsHelper.data_schema_migration.normalized_versions
40
- expect(versions.count).to eq(1)
41
- expect(versions).to include("20091231235959")
42
- end
43
-
44
- it "does not do anything if migration is undone twice" do
45
- context.migrate(nil)
46
- expect {
47
- context.run(:down, 20171231235959)
48
- }.to output(/Undoing SuperUpdate/).to_stdout
49
- expect {
50
- context.run(:down, 20171231235959)
51
- }.not_to output(/Undoing SuperUpdate/).to_stdout
52
- end
53
-
54
- it "runs a specific migration" do
55
- context.run(:up, 20171231235959)
56
- versions = DataMigrate::RailsHelper.data_schema_migration.normalized_versions
57
- expect(versions.count).to eq(1)
58
- expect(versions).to include("20171231235959")
59
- end
60
-
61
- it "does not do anything if migration is ran twice" do
62
- expect {
63
- context.run(:up, 20171231235959)
64
- }.to output(/Doing SuperUpdate/).to_stdout
65
- expect {
66
- context.run(:down, 20171231235959)
67
- }.not_to output(/Doing SuperUpdate/).to_stdout
68
- end
69
-
70
- it "alerts for an invalid specific migration" do
71
- expect {
72
- context.run(:up, 201712312)
73
- }.to raise_error(
74
- ActiveRecord::UnknownMigrationVersionError,
75
- /No migration with version number 201712312/
76
- )
77
- end
78
-
79
- it "rolls back latest migration" do
80
- context.migrate(nil)
81
- expect {
82
- context.rollback
83
- }.to output(/Undoing SuperUpdate/).to_stdout
84
- versions = DataMigrate::RailsHelper.data_schema_migration.normalized_versions
85
- expect(versions.count).to eq(1)
86
- expect(versions).to include("20091231235959")
87
- end
88
-
89
- it "rolls back 2 migrations" do
90
- context.migrate(nil)
91
- schema_context.migrate(nil)
92
- expect {
93
- context.rollback(2)
94
- }.to output(/Undoing SomeName/).to_stdout
95
- versions = DataMigrate::RailsHelper.data_schema_migration.normalized_versions
96
- expect(versions.count).to eq(0)
97
- end
98
-
99
- it "rolls back 2 migrations" do
100
- context.migrate(nil)
101
- expect {
102
- context.rollback(2)
103
- }.to output(/Undoing SomeName/).to_stdout
104
- versions = DataMigrate::RailsHelper.data_schema_migration.normalized_versions
105
- expect(versions.count).to eq(0)
106
- end
107
- end
108
-
109
- # schema migration changed in Rails 7.2, from the connection to the pool object.
110
- def ar_schema_migration
111
- if ActiveRecord::Base.connection_pool.respond_to?(:schema_migration)
112
- ActiveRecord::Base.connection_pool.schema_migration
113
- else
114
- ActiveRecord::Base.connection.schema_migration
115
- end
116
- end
117
- end
@@ -1,36 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require "spec_helper"
4
-
5
- describe DataMigrate::SchemaDumper do
6
- let(:subject) { DataMigrate::SchemaDumper }
7
- let(:fixture_file_timestamps) do
8
- %w[20091231235959 20101231235959 20111231235959]
9
- end
10
-
11
- before do
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
18
- end
19
-
20
- after do
21
- ActiveRecord::Migration.drop_table("data_migrations") rescue nil
22
- ActiveRecord::Migration.drop_table("schema_migrations") rescue nil
23
- end
24
-
25
- describe ".dump" do
26
- it "writes the define method with the version key to the stream" do
27
- stream = StringIO.new
28
- DataMigrate::SchemaDumper.dump(ActiveRecord::Base.connection, stream)
29
- stream.rewind
30
-
31
- last_version = fixture_file_timestamps.last
32
- expected = "DataMigrate::Data.define(version: #{last_version})"
33
- expect(stream.read).to include expected
34
- end
35
- end
36
- end
@@ -1,104 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require "spec_helper"
4
-
5
- describe DataMigrate::SchemaMigration do
6
- let(:subject) { DataMigrate::SchemaMigration }
7
- let(:migration_path) { "spec/db/migrate" }
8
- let(:fixture_file_timestamps) do
9
- %w[20091231235959 20101231235959 20111231235959]
10
- end
11
- let(:db_config) do
12
- {
13
- adapter: "sqlite3",
14
- database: "spec/db/test.db"
15
- }
16
- end
17
-
18
- before do
19
- ActiveRecord::Base.establish_connection(db_config)
20
- DataMigrate::RailsHelper.schema_migration.create_table
21
- DataMigrate::RailsHelper.data_schema_migration.create_table
22
- end
23
-
24
- after do
25
- ActiveRecord::Migration.drop_table("data_migrations") rescue nil
26
- ActiveRecord::Migration.drop_table("schema_migrations") rescue nil
27
- end
28
-
29
- describe :pending_schema_migrations do
30
- it "list sorted schema migrations" do
31
- expect(subject).to receive(:migrations_paths) {
32
- migration_path
33
- }
34
-
35
- migrations = subject.pending_schema_migrations
36
-
37
- expect(migrations.count).to eq 2
38
- expect(migrations[0][:version]).to eq(20131111111111)
39
- expect(migrations[1][:version]).to eq(20202020202011)
40
- end
41
- end
42
-
43
- describe :run do
44
- it "can run up task" do
45
- expect {
46
- subject.run(:up, migration_path, 20202020202011)
47
- }.to output(/20202020202011 DbMigration: migrating/).to_stdout
48
- versions = DataMigrate::RailsHelper.schema_migration.normalized_versions
49
- expect(versions.first).to eq("20202020202011")
50
- end
51
-
52
- it "can run down task" do
53
- subject.run(:up, migration_path, 20202020202011)
54
-
55
- expect {
56
- subject.run(:down, migration_path, 20202020202011)
57
- }.to output(/Undoing DbMigration/).to_stdout
58
-
59
- versions = DataMigrate::RailsHelper.schema_migration.normalized_versions
60
-
61
- expect(versions.count).to eq(0)
62
- end
63
- end
64
-
65
- describe :migrations_paths do
66
- context 'when a db_name is configured' do
67
- let(:config) { double(:config) }
68
- let(:paths) { ['spec/db/migrate', 'spec/db/migrate/other'] }
69
- let(:specification_name) { "primary" }
70
- let(:config_options) do
71
- if Gem::Dependency.new("railties", "~> 6.1").match?("railties", Gem.loaded_specs["railties"].version)
72
- { env_name: Rails.env, spec_name: specification_name }
73
- else
74
- { env_name: Rails.env, name: specification_name }
75
- end
76
- end
77
-
78
- before do
79
- @original_config_spec_name = DataMigrate.config.spec_name
80
-
81
- DataMigrate.configure do |config|
82
- config.spec_name = specification_name
83
- end
84
-
85
- allow(ActiveRecord::Base.configurations)
86
- .to receive(:configs_for)
87
- .with(config_options)
88
- .and_return(config)
89
- allow(config).to receive(:migrations_paths).and_return(paths)
90
- end
91
-
92
- after do
93
- DataMigrate.configure do |config|
94
- config.spec_name = @original_config_spec_name
95
- end
96
- end
97
-
98
- it 'lists schema migration paths' do
99
- expect(subject.migrations_paths.size).to eq(paths.count)
100
- expect(subject.migrations_paths).to eq(paths)
101
- end
102
- end
103
- end
104
- end
@@ -1,76 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require "spec_helper"
4
-
5
- describe DataMigrate::StatusService do
6
- let(:subject) { DataMigrate::StatusService }
7
- let(:stream) { StringIO.new }
8
- let(:stream_data) { stream.read }
9
- let(:connection_db_config) do
10
- if Gem::Dependency.new("railties", ">= 6.1").match?("railties", Gem.loaded_specs["railties"].version)
11
- ActiveRecord::Base.connection_db_config
12
- else
13
- ActiveRecord::Base.configurations.configs_for.first
14
- end
15
- end
16
-
17
- context "table does not exists" do
18
- before do
19
- allow_any_instance_of(subject).to receive(:table_name) { "bogus"}
20
-
21
- subject.dump(connection_db_config, stream)
22
- stream.rewind
23
- end
24
-
25
- it "show error message" do
26
- expect(stream_data).to include("Data migrations table does not exist")
27
- end
28
- end
29
-
30
- context "table exists" do
31
- let(:fixture_file_timestamps) do
32
- %w[20091231235959 20101231235959 20111231235959]
33
- end
34
-
35
- before do
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
42
-
43
- subject.dump(connection_db_config, stream)
44
- stream.rewind
45
- end
46
-
47
- after do
48
- ActiveRecord::Migration.drop_table("data_migrations") rescue nil
49
- ActiveRecord::Migration.drop_table("schema_migrations") rescue nil
50
- end
51
-
52
- it "shows successfully executed migration" do
53
- expected = " up 20091231235959 Some name"
54
- expect(stream_data).to include expected
55
- end
56
-
57
- it "excludes files without .rb extension" do
58
- expected = "20181128000207 Excluded file"
59
- expect(stream_data).to_not include expected
60
- end
61
-
62
- it "shows missing file migration" do
63
- expected = " up 20101231235959 ********** NO FILE **********"
64
- expect(stream_data).to include expected
65
- end
66
-
67
- it "shows migration that has not run yet" do
68
- expected = " down 20171231235959 Super update"
69
- expect(stream_data).to include expected
70
- end
71
-
72
- it "outputs migrations in chronological order" do
73
- expect(stream_data.index("20091231235959")).to be < stream_data.index("20111231235959")
74
- end
75
- end
76
- end