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.
- checksums.yaml +4 -4
- data/Changelog.md +11 -0
- data/README.md +13 -18
- data/lib/data_migrate/config.rb +2 -1
- data/lib/data_migrate/data_migrator.rb +0 -1
- data/lib/data_migrate/data_schema_migration.rb +2 -2
- data/lib/data_migrate/database_tasks.rb +14 -4
- data/lib/data_migrate/rails_helper.rb +1 -0
- data/lib/data_migrate/version.rb +1 -1
- metadata +5 -54
- data/.github/workflows/build.yml +0 -39
- data/.github/workflows/gempush.yml +0 -28
- data/.gitignore +0 -12
- data/.hound.yml +0 -4
- data/.overcommit.yml +0 -21
- data/.rbenv-gemsets +0 -2
- data/.rspec +0 -3
- data/.rubocop.yml +0 -2
- data/.ruby-style.yml +0 -1061
- data/Appraisals +0 -19
- data/Gemfile +0 -3
- data/Gemfile.lock +0 -192
- data/Rakefile +0 -2
- data/data_migrate.gemspec +0 -41
- data/gemfiles/rails_6.1.gemfile +0 -7
- data/gemfiles/rails_6.1.gemfile.lock +0 -237
- data/gemfiles/rails_7.0.gemfile +0 -7
- data/gemfiles/rails_7.0.gemfile.lock +0 -238
- data/gemfiles/rails_7.1.gemfile +0 -7
- data/gemfiles/rails_7.1.gemfile.lock +0 -277
- data/gemfiles/rails_7.2.gemfile +0 -7
- data/gemfiles/rails_7.2.gemfile.lock +0 -274
- data/gemfiles/rails_8.0.gemfile +0 -7
- data/gemfiles/rails_8.0.gemfile.lock +0 -268
- data/screenshot.png +0 -0
- data/spec/data_migrate/config_spec.rb +0 -69
- data/spec/data_migrate/data_migrator_spec.rb +0 -84
- data/spec/data_migrate/data_schema_migration_spec.rb +0 -33
- data/spec/data_migrate/data_spec.rb +0 -74
- data/spec/data_migrate/database_tasks_spec.rb +0 -214
- data/spec/data_migrate/migration.rb +0 -17
- data/spec/data_migrate/migration_context_spec.rb +0 -117
- data/spec/data_migrate/schema_dumper_spec.rb +0 -36
- data/spec/data_migrate/schema_migration_spec.rb +0 -104
- data/spec/data_migrate/status_service_spec.rb +0 -76
- data/spec/data_migrate/tasks/data_migrate_tasks_spec.rb +0 -129
- data/spec/db/data/20091231235959_some_name.rb +0 -9
- data/spec/db/data/20171231235959_super_update.rb +0 -9
- data/spec/db/data/20181128000207_excluded_file.rb.other_ext +0 -1
- data/spec/db/data/partial_schema/data_schema.rb +0 -1
- data/spec/db/data/partial_schema/test_data_schema.rb +0 -1
- data/spec/db/data/schema/data_schema.rb +0 -1
- data/spec/db/data/schema/test_data_schema.rb +0 -1
- data/spec/db/data_two/20241231235959_data_two_update.rb +0 -9
- data/spec/db/migrate/20131111111111_late_migration.rb +0 -9
- data/spec/db/migrate/20202020202011_db_migration.rb +0 -9
- data/spec/generators/data_migration/data_migration_generator_spec.rb +0 -101
- data/spec/spec_helper.rb +0 -28
- data/tasks/.gitkeep +0 -0
@@ -1,129 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
require "spec_helper"
|
4
|
-
|
5
|
-
describe DataMigrate::Tasks::DataMigrateTasks do
|
6
|
-
let(:db_config) do
|
7
|
-
{
|
8
|
-
adapter: "sqlite3",
|
9
|
-
database: "spec/db/test.db"
|
10
|
-
}
|
11
|
-
end
|
12
|
-
|
13
|
-
before do
|
14
|
-
ActiveRecord::Base.establish_connection(db_config)
|
15
|
-
DataMigrate::RailsHelper.schema_migration.create_table
|
16
|
-
DataMigrate::RailsHelper.data_schema_migration.create_table
|
17
|
-
end
|
18
|
-
|
19
|
-
after do
|
20
|
-
ActiveRecord::Migration.drop_table("data_migrations") rescue nil
|
21
|
-
ActiveRecord::Migration.drop_table("schema_migrations") rescue nil
|
22
|
-
end
|
23
|
-
|
24
|
-
describe :dump do
|
25
|
-
before do
|
26
|
-
allow(DataMigrate::DatabaseTasks).to receive(:db_dir).and_return("spec/db")
|
27
|
-
DataMigrate::Tasks::DataMigrateTasks.migrate
|
28
|
-
end
|
29
|
-
|
30
|
-
context 'when not given a separate db config' do
|
31
|
-
it 'does not override the default connection' do
|
32
|
-
expect(ActiveRecord::Base).not_to receive(:establish_connection)
|
33
|
-
expect(DataMigrate::SchemaDumper).to receive(:dump)
|
34
|
-
|
35
|
-
DataMigrate::Tasks::DataMigrateTasks.dump
|
36
|
-
end
|
37
|
-
end
|
38
|
-
|
39
|
-
context 'when given a separate db config' do
|
40
|
-
let(:override_config) do
|
41
|
-
{
|
42
|
-
'host' => '127.0.0.1',
|
43
|
-
'database' => 'other_test',
|
44
|
-
'adapter' => 'sqlite3',
|
45
|
-
'username' => 'root',
|
46
|
-
'password' => nil,
|
47
|
-
}
|
48
|
-
end
|
49
|
-
let(:paths) { ["spec/db/migrate"] }
|
50
|
-
|
51
|
-
before do
|
52
|
-
DataMigrate.configure do |config|
|
53
|
-
config.db_configuration = override_config
|
54
|
-
end
|
55
|
-
end
|
56
|
-
|
57
|
-
it 'overrides the default connection' do
|
58
|
-
expect(ActiveRecord::Base).to receive(:establish_connection).with(override_config)
|
59
|
-
DataMigrate::Tasks::DataMigrateTasks.dump
|
60
|
-
end
|
61
|
-
end
|
62
|
-
end
|
63
|
-
|
64
|
-
describe :migrate do
|
65
|
-
it "first run should run the first pending migration" do
|
66
|
-
expect { DataMigrate::Tasks::DataMigrateTasks.migrate }.to output(/20091231235959 SomeName: migrating/).to_stdout
|
67
|
-
end
|
68
|
-
|
69
|
-
it "second run should run the second pending migration" do
|
70
|
-
expect { DataMigrate::Tasks::DataMigrateTasks.migrate }.to output(/20171231235959 SuperUpdate: migrating/).to_stdout
|
71
|
-
end
|
72
|
-
end
|
73
|
-
|
74
|
-
describe :abort_if_pending_migrations do
|
75
|
-
subject { DataMigrate::Tasks::DataMigrateTasks.abort_if_pending_migrations(migrations, message) }
|
76
|
-
|
77
|
-
let(:message) { "ABORT_MESSAGE" }
|
78
|
-
|
79
|
-
context "when there are no pending migrations" do
|
80
|
-
let(:migrations) { [] }
|
81
|
-
|
82
|
-
it "shouldn't do anything" do
|
83
|
-
expect { subject }.to_not raise_error
|
84
|
-
end
|
85
|
-
end
|
86
|
-
|
87
|
-
context "when there are pending migrations" do
|
88
|
-
let(:migrations) do
|
89
|
-
[{
|
90
|
-
name: "A",
|
91
|
-
version: 1
|
92
|
-
}, {
|
93
|
-
name: 'B',
|
94
|
-
version: 2
|
95
|
-
}]
|
96
|
-
end
|
97
|
-
|
98
|
-
it "should abort with given message and print names and versions of pending migrations" do
|
99
|
-
expect { subject }
|
100
|
-
.to raise_error(SystemExit, message)
|
101
|
-
.and output(match(/You have #{migrations.count} pending migrations:/)
|
102
|
-
.and match(Regexp.new(migrations.map { |m| m.slice(:version, :name)
|
103
|
-
.values.join("\\W+") }.join("\\W+")))).to_stdout
|
104
|
-
end
|
105
|
-
end
|
106
|
-
end
|
107
|
-
|
108
|
-
describe ".status" do
|
109
|
-
before do
|
110
|
-
allow(Rails).to receive(:root) { "." }
|
111
|
-
allow(Rails).to receive(:application) { OpenStruct.new(config: OpenStruct.new(paths: { "db/migrate" => ["spec/db/migrate"] })) }
|
112
|
-
|
113
|
-
DataMigrate::Tasks::DataMigrateTasks.migrate
|
114
|
-
end
|
115
|
-
|
116
|
-
it "should display data migration status" do
|
117
|
-
expect {
|
118
|
-
DataMigrate::Tasks::DataMigrateTasks.status
|
119
|
-
}.to output(/up 20091231235959 Some name/).to_stdout
|
120
|
-
end
|
121
|
-
|
122
|
-
it "should display schema and data migration status" do
|
123
|
-
expect {
|
124
|
-
DataMigrate::Tasks::DataMigrateTasks.status_with_schema
|
125
|
-
}.to output(match(/up data 20091231235959 Some name/)
|
126
|
-
.and match(/down schema 20131111111111 Late migration/)).to_stdout
|
127
|
-
end
|
128
|
-
end
|
129
|
-
end
|
@@ -1 +0,0 @@
|
|
1
|
-
# This file should be excluded
|
@@ -1 +0,0 @@
|
|
1
|
-
DataMigrate::Data.define(version: 20091231235959)
|
@@ -1 +0,0 @@
|
|
1
|
-
DataMigrate::Data.define(version: 20091231235959)
|
@@ -1 +0,0 @@
|
|
1
|
-
DataMigrate::Data.define(version: 20171231235959)
|
@@ -1 +0,0 @@
|
|
1
|
-
DataMigrate::Data.define(version: 20171231235959)
|
@@ -1,101 +0,0 @@
|
|
1
|
-
require 'spec_helper'
|
2
|
-
require 'rails/generators'
|
3
|
-
require 'rails/generators/migration'
|
4
|
-
require 'generators/data_migration/data_migration_generator'
|
5
|
-
|
6
|
-
describe DataMigrate::Generators::DataMigrationGenerator do
|
7
|
-
subject { DataMigrate::Generators::DataMigrationGenerator }
|
8
|
-
|
9
|
-
describe :next_migration_number do
|
10
|
-
it "next migration" do
|
11
|
-
Timecop.freeze("2016-12-03 22:15:26 -0800") do
|
12
|
-
if ActiveRecord.version >= Gem::Version.new('7.0')
|
13
|
-
expect(ActiveRecord).to receive(:timestamped_migrations) { true }
|
14
|
-
else
|
15
|
-
expect(ActiveRecord::Base).to receive(:timestamped_migrations) { true }
|
16
|
-
end
|
17
|
-
expect(subject.next_migration_number(1).to_s).to eq("20161204061526")
|
18
|
-
end
|
19
|
-
end
|
20
|
-
end
|
21
|
-
|
22
|
-
describe :migration_base_class_name do
|
23
|
-
subject { generator.send(:migration_base_class_name) }
|
24
|
-
|
25
|
-
let(:generator) { DataMigrate::Generators::DataMigrationGenerator.new(['my_migration']) }
|
26
|
-
|
27
|
-
it "returns the correct base class name" do
|
28
|
-
is_expected.to eq("ActiveRecord::Migration[#{ActiveRecord::Migration.current_version}]")
|
29
|
-
end
|
30
|
-
end
|
31
|
-
|
32
|
-
describe :create_data_migration do
|
33
|
-
subject { DataMigrate::Generators::DataMigrationGenerator.new(['my_migration']) }
|
34
|
-
|
35
|
-
let(:data_migrations_file_path) { 'abc/my_migration.rb' }
|
36
|
-
|
37
|
-
context 'when custom data migrations path has a trailing slash' do
|
38
|
-
before do
|
39
|
-
DataMigrate.config.data_migrations_path = 'abc/'
|
40
|
-
end
|
41
|
-
|
42
|
-
it 'returns correct file path' do
|
43
|
-
is_expected.to receive(:migration_template).with(
|
44
|
-
'data_migration.rb', data_migrations_file_path
|
45
|
-
)
|
46
|
-
|
47
|
-
subject.create_data_migration
|
48
|
-
end
|
49
|
-
end
|
50
|
-
|
51
|
-
context 'when custom data migrations path does not have a trailing slash' do
|
52
|
-
before do
|
53
|
-
DataMigrate.config.data_migrations_path = 'abc'
|
54
|
-
end
|
55
|
-
|
56
|
-
it 'returns correct file path' do
|
57
|
-
is_expected.to receive(:migration_template).with(
|
58
|
-
'data_migration.rb', data_migrations_file_path
|
59
|
-
)
|
60
|
-
|
61
|
-
subject.create_data_migration
|
62
|
-
end
|
63
|
-
end
|
64
|
-
end
|
65
|
-
|
66
|
-
describe ".source_root" do
|
67
|
-
subject { described_class.source_root }
|
68
|
-
|
69
|
-
let(:default_source_root) do
|
70
|
-
File.expand_path(
|
71
|
-
File.dirname(File.join(DataMigrate.root, "generators", "data_migration", "templates", "data_migration.rb"))
|
72
|
-
)
|
73
|
-
end
|
74
|
-
|
75
|
-
it { is_expected.to eq default_source_root }
|
76
|
-
|
77
|
-
context "when DateMigrate.config.data_template_path is set" do
|
78
|
-
before do
|
79
|
-
@before = DataMigrate.config.data_template_path
|
80
|
-
DataMigrate.configure do |config|
|
81
|
-
config.data_template_path = data_template_path
|
82
|
-
end
|
83
|
-
end
|
84
|
-
|
85
|
-
let(:data_template_path) do
|
86
|
-
File.join(DataMigrate.root, "generators", "data_migration", "templates", "data_migration.rb")
|
87
|
-
end
|
88
|
-
let(:expected_source_root) { File.dirname(data_template_path) }
|
89
|
-
|
90
|
-
after do
|
91
|
-
DataMigrate.configure do |config|
|
92
|
-
config.data_template_path = @before
|
93
|
-
end
|
94
|
-
end
|
95
|
-
|
96
|
-
it "reads directory from config data template path" do
|
97
|
-
is_expected.to eq expected_source_root
|
98
|
-
end
|
99
|
-
end
|
100
|
-
end
|
101
|
-
end
|
data/spec/spec_helper.rb
DELETED
@@ -1,28 +0,0 @@
|
|
1
|
-
require 'rspec'
|
2
|
-
require 'rails'
|
3
|
-
require 'sqlite3'
|
4
|
-
require 'data_migrate'
|
5
|
-
require 'pry'
|
6
|
-
require 'timecop'
|
7
|
-
|
8
|
-
RSpec.configure do |config|
|
9
|
-
config.mock_with :rspec do |mocks|
|
10
|
-
mocks.verify_partial_doubles = true
|
11
|
-
end
|
12
|
-
|
13
|
-
config.after(:each) do
|
14
|
-
DataMigrate.configure do |config|
|
15
|
-
config.data_migrations_path = @prev_data_migrations_path
|
16
|
-
end
|
17
|
-
end
|
18
|
-
|
19
|
-
config.before(:each) do |example|
|
20
|
-
if example.metadata[:no_override]
|
21
|
-
else
|
22
|
-
@prev_data_migrations_path = DataMigrate.config.data_migrations_path
|
23
|
-
DataMigrate.configure do |config|
|
24
|
-
config.data_migrations_path = ["spec/db/data", "spec/db/data_two"]
|
25
|
-
end
|
26
|
-
end
|
27
|
-
end
|
28
|
-
end
|
data/tasks/.gitkeep
DELETED
File without changes
|