ridgepole 0.6.4 → 0.6.5.beta
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/.gitignore +1 -0
- data/.travis.yml +18 -8
- data/Appraisals +8 -0
- data/README.md +26 -2
- data/docker-compose.yml +12 -0
- data/gemfiles/activerecord_4.2.gemfile +8 -0
- data/gemfiles/activerecord_5.0.gemfile +7 -0
- data/lib/ridgepole/diff.rb +3 -1
- data/lib/ridgepole/version.rb +1 -1
- data/ridgepole.gemspec +6 -2
- data/spec/cli_helper.rb +63 -0
- data/spec/mysql/bigint_pk/bigint_pk_spec.rb +45 -0
- data/spec/mysql/cli/config_spec.rb +0 -2
- data/spec/mysql/cli/ridgepole_spec.rb +58 -56
- data/spec/mysql/collation/collation_spec.rb +134 -138
- data/spec/mysql/diff/diff2_spec.rb +1 -3
- data/spec/mysql/diff/diff_spec.rb +1 -3
- data/spec/mysql/dump/dump_class_method_spec.rb +29 -11
- data/spec/mysql/dump/dump_some_tables_spec.rb +18 -8
- data/spec/mysql/dump/dump_spec.rb +28 -10
- data/spec/mysql/dump/dump_without_table_options_spec.rb +29 -33
- data/spec/mysql/fk/migrate_change_fk_spec.rb +2 -4
- data/spec/mysql/fk/migrate_create_fk_spec.rb +39 -29
- data/spec/mysql/fk/migrate_drop_fk_spec.rb +20 -22
- data/spec/mysql/migrate/check_orphan_index_spec.rb +2 -4
- data/spec/mysql/migrate/migrate_add_column2_spec.rb +33 -26
- data/spec/mysql/migrate/migrate_add_column_spec.rb +32 -22
- data/spec/mysql/migrate/migrate_add_column_with_alter_extra_spec.rb +26 -16
- data/spec/mysql/migrate/migrate_add_column_with_script_spec.rb +27 -17
- data/spec/mysql/migrate/migrate_change_column2_spec.rb +26 -16
- data/spec/mysql/migrate/migrate_change_column3_spec.rb +54 -44
- data/spec/mysql/migrate/migrate_change_column4_spec.rb +8 -10
- data/spec/mysql/migrate/migrate_change_column5_spec.rb +32 -22
- data/spec/mysql/migrate/migrate_change_column6_spec.rb +28 -30
- data/spec/mysql/migrate/migrate_change_column_default_spec.rb +34 -36
- data/spec/mysql/migrate/migrate_change_column_float_spec.rb +10 -12
- data/spec/mysql/migrate/migrate_change_column_spec.rb +41 -29
- data/spec/mysql/migrate/migrate_change_index2_spec.rb +12 -14
- data/spec/mysql/migrate/migrate_change_index3_spec.rb +24 -26
- data/spec/mysql/migrate/migrate_change_index4_spec.rb +34 -24
- data/spec/mysql/migrate/migrate_change_index5_spec.rb +26 -16
- data/spec/mysql/migrate/migrate_change_index6_spec.rb +38 -28
- data/spec/mysql/migrate/migrate_change_index_spec.rb +39 -29
- data/spec/mysql/migrate/migrate_change_table_option_spec.rb +26 -13
- data/spec/mysql/migrate/migrate_create_index2_spec.rb +30 -20
- data/spec/mysql/migrate/migrate_create_index_spec.rb +28 -18
- data/spec/mysql/migrate/migrate_create_table_spec.rb +24 -14
- data/spec/mysql/migrate/migrate_create_table_with_options_spec.rb +4 -6
- data/spec/mysql/migrate/migrate_create_table_with_script_spec.rb +23 -13
- data/spec/mysql/migrate/migrate_drop_column_and_index2_spec.rb +32 -22
- data/spec/mysql/migrate/migrate_drop_column_and_index_spec.rb +35 -25
- data/spec/mysql/migrate/migrate_drop_column_spec.rb +36 -26
- data/spec/mysql/migrate/migrate_drop_index_spec.rb +28 -18
- data/spec/mysql/migrate/migrate_drop_table_spec.rb +29 -19
- data/spec/mysql/migrate/migrate_duplicate_index_spec.rb +2 -4
- data/spec/mysql/migrate/migrate_duplicate_table_spec.rb +2 -4
- data/spec/mysql/migrate/migrate_empty_spec.rb +24 -14
- data/spec/mysql/migrate/migrate_execute_spec.rb +78 -65
- data/spec/mysql/migrate/migrate_log_file_spec.rb +22 -12
- data/spec/mysql/migrate/migrate_merge_mode_spec.rb +31 -21
- data/spec/mysql/migrate/migrate_noop_spec.rb +55 -45
- data/spec/mysql/migrate/migrate_rename_column_spec.rb +38 -28
- data/spec/mysql/migrate/migrate_rename_table_spec.rb +43 -33
- data/spec/mysql/migrate/migrate_same_default_null_spec.rb +28 -18
- data/spec/mysql/migrate/migrate_same_spec.rb +26 -12
- data/spec/mysql/migrate/migrate_script_error_spec.rb +3 -5
- data/spec/mysql/migrate/migrate_skip_rename_column_spec.rb +30 -20
- data/spec/mysql/migrate/migrate_skip_rename_table_spec.rb +30 -20
- data/spec/mysql/migrate/migrate_with_ignore_tables_spec.rb +44 -46
- data/spec/mysql/migrate/migrate_with_pre_post_query_spec.rb +6 -8
- data/spec/mysql/migrate/migrate_with_tables_spec.rb +20 -22
- data/spec/mysql/migrate_/migrate_create_index_with_alter_spec.rb +22 -12
- data/spec/mysql/migrate_/migrate_drop_index_with_alter_spec.rb +22 -12
- data/spec/mysql/~default_name_fk/migrate_change_fk_spec.rb +8 -10
- data/spec/mysql/~default_name_fk/migrate_create_fk_spec.rb +39 -29
- data/spec/mysql/~default_name_fk/migrate_drop_fk_spec.rb +20 -22
- data/spec/postgresql/diff/diff_spec.rb +7 -9
- data/spec/postgresql/dump/dump_spec.rb +2 -4
- data/spec/postgresql/fk/migrate_change_fk_spec.rb +8 -10
- data/spec/postgresql/fk/migrate_create_fk_spec.rb +24 -26
- data/spec/postgresql/fk/migrate_drop_fk_spec.rb +21 -23
- data/spec/postgresql/migrate/migrate_add_column_spec.rb +19 -22
- data/spec/postgresql/migrate/migrate_change_column_default_spec.rb +6 -8
- data/spec/postgresql/migrate/migrate_change_column_spec.rb +17 -19
- data/spec/postgresql/migrate/migrate_change_index_spec.rb +11 -13
- data/spec/postgresql/migrate/migrate_create_table_spec.rb +6 -9
- data/spec/postgresql/migrate/migrate_drop_column_spec.rb +12 -14
- data/spec/postgresql/migrate/migrate_drop_column_with_index_spec.rb +12 -14
- data/spec/postgresql/migrate/migrate_drop_index_spec.rb +10 -12
- data/spec/postgresql/migrate/migrate_drop_table_spec.rb +7 -9
- data/spec/postgresql/migrate/migrate_ext_cols_spec.rb +6 -8
- data/spec/postgresql/migrate/migrate_rename_column_spec.rb +12 -14
- data/spec/postgresql/migrate/migrate_rename_table_spec.rb +14 -16
- data/spec/postgresql/migrate/migrate_same_spec.rb +4 -6
- data/spec/postgresql/~default_name_fk/migrate_change_fk_spec.rb +8 -10
- data/spec/postgresql/~default_name_fk/migrate_create_fk_spec.rb +24 -26
- data/spec/postgresql/~default_name_fk/migrate_drop_fk_spec.rb +20 -22
- data/spec/processing_for_travis.rb +9 -0
- data/spec/spec_condition.rb +24 -0
- data/spec/spec_const.rb +18 -0
- data/spec/spec_helper.rb +125 -196
- data/spec/string_ext.rb +0 -13
- metadata +106 -32
- data/spec/mysql/bigint_pk/bigint_pkspec.rb +0 -47
@@ -1,9 +1,26 @@
|
|
1
|
-
unless postgresql?
|
2
1
|
describe 'Ridgepole::Client#diff -> migrate' do
|
2
|
+
let(:template_variables) {
|
3
|
+
opts = {
|
4
|
+
unsigned: {},
|
5
|
+
sql_int_pk_type: 'int(11) auto_increment PRIMARY KEY',
|
6
|
+
sql_int_type: 'int(11)',
|
7
|
+
sql_uint_type: 'int(11)',
|
8
|
+
}
|
9
|
+
|
10
|
+
if condition(:mysql_awesome_enabled)
|
11
|
+
opts[:unsigned] = {unsigned: true}
|
12
|
+
opts[:sql_int_pk_type] = 'int PRIMARY KEY AUTO_INCREMENT'
|
13
|
+
opts[:sql_int_type] = 'int'
|
14
|
+
opts[:sql_uint_type] = 'int unsigned'
|
15
|
+
end
|
16
|
+
|
17
|
+
opts
|
18
|
+
}
|
19
|
+
|
3
20
|
context 'when no operation' do
|
4
21
|
let(:actual_dsl) { '' }
|
5
22
|
let(:expected_dsl) {
|
6
|
-
<<-
|
23
|
+
<<-EOS
|
7
24
|
create_table "clubs", force: :cascade do |t|
|
8
25
|
t.string "name", default: "", null: false
|
9
26
|
end
|
@@ -68,7 +85,7 @@ describe 'Ridgepole::Client#diff -> migrate' do
|
|
68
85
|
end
|
69
86
|
|
70
87
|
add_index "titles", ["emp_no"], name: "emp_no", using: :btree
|
71
|
-
|
88
|
+
EOS
|
72
89
|
}
|
73
90
|
|
74
91
|
subject { client }
|
@@ -78,29 +95,27 @@ describe 'Ridgepole::Client#diff -> migrate' do
|
|
78
95
|
expect(delta.differ?).to be_truthy
|
79
96
|
migrated, sql = delta.migrate(:noop => true)
|
80
97
|
expect(migrated).to be_truthy
|
81
|
-
expect(subject.dump).to
|
98
|
+
expect(subject.dump).to match_fuzzy actual_dsl
|
82
99
|
|
83
|
-
sql
|
84
|
-
|
85
|
-
expect(sql).to eq <<-SQL.strip_heredoc.strip
|
86
|
-
CREATE TABLE `clubs` (`id` #{if_mysql_awesome_enabled('int PRIMARY KEY AUTO_INCREMENT', 'int(11) auto_increment PRIMARY KEY')}, `name` varchar(255) DEFAULT '' NOT NULL) ENGINE=InnoDB
|
100
|
+
expect(sql).to match_fuzzy erbh(<<-EOS, template_variables)
|
101
|
+
CREATE TABLE `clubs` (`id` <%= @sql_int_pk_type %>, `name` varchar(255) DEFAULT '' NOT NULL) ENGINE=InnoDB
|
87
102
|
CREATE UNIQUE INDEX `idx_name` USING btree ON `clubs` (`name`)
|
88
|
-
CREATE TABLE `departments` (`dept_no`
|
103
|
+
CREATE TABLE `departments` (`dept_no` <%= @sql_int_pk_type %>, `dept_name` varchar(40) NOT NULL) ENGINE=InnoDB
|
89
104
|
CREATE UNIQUE INDEX `dept_name` USING btree ON `departments` (`dept_name`)
|
90
|
-
CREATE TABLE `dept_emp` (`emp_no`
|
105
|
+
CREATE TABLE `dept_emp` (`emp_no` <%= @sql_int_type %> NOT NULL, `dept_no` varchar(4) NOT NULL, `from_date` date NOT NULL, `to_date` date NOT NULL) ENGINE=InnoDB
|
91
106
|
CREATE INDEX `dept_no` USING btree ON `dept_emp` (`dept_no`)
|
92
107
|
CREATE INDEX `emp_no` USING btree ON `dept_emp` (`emp_no`)
|
93
|
-
CREATE TABLE `dept_manager` (`dept_no` varchar(4) NOT NULL, `emp_no`
|
108
|
+
CREATE TABLE `dept_manager` (`dept_no` varchar(4) NOT NULL, `emp_no` <%= @sql_int_type %> NOT NULL, `from_date` date NOT NULL, `to_date` date NOT NULL) ENGINE=InnoDB
|
94
109
|
CREATE INDEX `dept_no` USING btree ON `dept_manager` (`dept_no`)
|
95
110
|
CREATE INDEX `emp_no` USING btree ON `dept_manager` (`emp_no`)
|
96
|
-
CREATE TABLE `employee_clubs` (`id`
|
111
|
+
CREATE TABLE `employee_clubs` (`id` <%= @sql_int_pk_type %>, `emp_no` <%= @sql_uint_type %> NOT NULL, `club_id` <%= @sql_uint_type %> NOT NULL) ENGINE=InnoDB
|
97
112
|
CREATE INDEX `idx_emp_no_club_id` USING btree ON `employee_clubs` (`emp_no`, `club_id`)
|
98
|
-
CREATE TABLE `employees` (`emp_no`
|
99
|
-
CREATE TABLE `salaries` (`emp_no`
|
113
|
+
CREATE TABLE `employees` (`emp_no` <%= @sql_int_pk_type %>, `birth_date` date NOT NULL, `first_name` varchar(14) NOT NULL, `last_name` varchar(16) NOT NULL, `gender` varchar(1) NOT NULL, `hire_date` date NOT NULL) ENGINE=InnoDB
|
114
|
+
CREATE TABLE `salaries` (`emp_no` <%= @sql_int_type %> NOT NULL, `salary` <%= @sql_int_type %> NOT NULL, `from_date` date NOT NULL, `to_date` date NOT NULL) ENGINE=InnoDB
|
100
115
|
CREATE INDEX `emp_no` USING btree ON `salaries` (`emp_no`)
|
101
|
-
CREATE TABLE `titles` (`emp_no`
|
116
|
+
CREATE TABLE `titles` (`emp_no` <%= @sql_int_type %> NOT NULL, `title` varchar(50) NOT NULL, `from_date` date NOT NULL, `to_date` date) ENGINE=InnoDB
|
102
117
|
CREATE INDEX `emp_no` USING btree ON `titles` (`emp_no`)
|
103
|
-
|
118
|
+
EOS
|
104
119
|
}
|
105
120
|
|
106
121
|
it {
|
@@ -108,34 +123,32 @@ describe 'Ridgepole::Client#diff -> migrate' do
|
|
108
123
|
expect(delta.differ?).to be_truthy
|
109
124
|
migrated, sql = delta.migrate(:noop => true)
|
110
125
|
expect(migrated).to be_truthy
|
111
|
-
expect(subject.dump).to
|
112
|
-
|
113
|
-
sql = sql.each_line.map {|i| i.strip }.join("\n")
|
126
|
+
expect(subject.dump).to match_fuzzy actual_dsl
|
114
127
|
|
115
|
-
expect(sql).to
|
116
|
-
CREATE TABLE `clubs` (`id`
|
128
|
+
expect(sql).to match_fuzzy erbh(<<-EOS, template_variables)
|
129
|
+
CREATE TABLE `clubs` (`id` <%= @sql_int_pk_type %>, `name` varchar(255) DEFAULT '' NOT NULL) ENGINE=InnoDB
|
117
130
|
ALTER TABLE `clubs` ADD UNIQUE INDEX idx_name (`name`)
|
118
|
-
CREATE TABLE `departments` (`dept_no`
|
131
|
+
CREATE TABLE `departments` (`dept_no` <%= @sql_int_pk_type %>, `dept_name` varchar(40) NOT NULL) ENGINE=InnoDB
|
119
132
|
ALTER TABLE `departments` ADD UNIQUE INDEX dept_name (`dept_name`)
|
120
|
-
CREATE TABLE `dept_emp` (`emp_no`
|
133
|
+
CREATE TABLE `dept_emp` (`emp_no` <%= @sql_int_type %> NOT NULL, `dept_no` varchar(4) NOT NULL, `from_date` date NOT NULL, `to_date` date NOT NULL) ENGINE=InnoDB
|
121
134
|
ALTER TABLE `dept_emp` ADD INDEX dept_no (`dept_no`), ADD INDEX emp_no (`emp_no`)
|
122
|
-
CREATE TABLE `dept_manager` (`dept_no` varchar(4) NOT NULL, `emp_no`
|
135
|
+
CREATE TABLE `dept_manager` (`dept_no` varchar(4) NOT NULL, `emp_no` <%= @sql_int_type %> NOT NULL, `from_date` date NOT NULL, `to_date` date NOT NULL) ENGINE=InnoDB
|
123
136
|
ALTER TABLE `dept_manager` ADD INDEX dept_no (`dept_no`), ADD INDEX emp_no (`emp_no`)
|
124
|
-
CREATE TABLE `employee_clubs` (`id`
|
137
|
+
CREATE TABLE `employee_clubs` (`id` <%= @sql_int_pk_type %>, `emp_no` <%= @sql_uint_type %> NOT NULL, `club_id` <%= @sql_uint_type %> NOT NULL) ENGINE=InnoDB
|
125
138
|
ALTER TABLE `employee_clubs` ADD INDEX idx_emp_no_club_id (`emp_no`, `club_id`)
|
126
|
-
CREATE TABLE `employees` (`emp_no`
|
127
|
-
CREATE TABLE `salaries` (`emp_no`
|
139
|
+
CREATE TABLE `employees` (`emp_no` <%= @sql_int_pk_type %>, `birth_date` date NOT NULL, `first_name` varchar(14) NOT NULL, `last_name` varchar(16) NOT NULL, `gender` varchar(1) NOT NULL, `hire_date` date NOT NULL) ENGINE=InnoDB
|
140
|
+
CREATE TABLE `salaries` (`emp_no` <%= @sql_int_type %> NOT NULL, `salary` <%= @sql_int_type %> NOT NULL, `from_date` date NOT NULL, `to_date` date NOT NULL) ENGINE=InnoDB
|
128
141
|
ALTER TABLE `salaries` ADD INDEX emp_no (`emp_no`)
|
129
|
-
CREATE TABLE `titles` (`emp_no`
|
142
|
+
CREATE TABLE `titles` (`emp_no` <%= @sql_int_type %> NOT NULL, `title` varchar(50) NOT NULL, `from_date` date NOT NULL, `to_date` date) ENGINE=InnoDB
|
130
143
|
ALTER TABLE `titles` ADD INDEX emp_no (`emp_no`)
|
131
|
-
|
144
|
+
EOS
|
132
145
|
}
|
133
146
|
end
|
134
147
|
|
135
148
|
context 'when no operation' do
|
136
149
|
let(:actual_dsl) { '' }
|
137
150
|
let(:expected_dsl) {
|
138
|
-
<<-
|
151
|
+
<<-EOS
|
139
152
|
create_table "clubs", force: :cascade do |t|
|
140
153
|
t.string "name", default: "", null: false
|
141
154
|
end
|
@@ -200,7 +213,7 @@ describe 'Ridgepole::Client#diff -> migrate' do
|
|
200
213
|
end
|
201
214
|
|
202
215
|
add_index "titles", ["emp_no"], name: "emp_no", using: :btree
|
203
|
-
|
216
|
+
EOS
|
204
217
|
}
|
205
218
|
|
206
219
|
subject { client(:default_int_limit => 11) }
|
@@ -210,30 +223,27 @@ describe 'Ridgepole::Client#diff -> migrate' do
|
|
210
223
|
expect(delta.differ?).to be_truthy
|
211
224
|
migrated, sql = delta.migrate(:noop => true)
|
212
225
|
expect(migrated).to be_truthy
|
213
|
-
expect(subject.dump).to
|
226
|
+
expect(subject.dump).to match_fuzzy actual_dsl
|
214
227
|
|
215
|
-
sql
|
216
|
-
|
217
|
-
expect(sql).to eq <<-SQL.strip_heredoc.strip
|
218
|
-
CREATE TABLE `clubs` (`id` #{if_mysql_awesome_enabled('int PRIMARY KEY AUTO_INCREMENT', 'int(11) auto_increment PRIMARY KEY')}, `name` varchar(255) DEFAULT '' NOT NULL) ENGINE=InnoDB
|
228
|
+
expect(sql).to match_fuzzy erbh(<<-EOS, template_variables)
|
229
|
+
CREATE TABLE `clubs` (`id` <%= @sql_int_pk_type %>, `name` varchar(255) DEFAULT '' NOT NULL) ENGINE=InnoDB
|
219
230
|
CREATE UNIQUE INDEX `idx_name` USING btree ON `clubs` (`name`)
|
220
|
-
CREATE TABLE `departments` (`dept_no`
|
231
|
+
CREATE TABLE `departments` (`dept_no` <%= @sql_int_pk_type %>, `dept_name` varchar(40) NOT NULL) ENGINE=InnoDB
|
221
232
|
CREATE UNIQUE INDEX `dept_name` USING btree ON `departments` (`dept_name`)
|
222
|
-
CREATE TABLE `dept_emp` (`emp_no`
|
233
|
+
CREATE TABLE `dept_emp` (`emp_no` <%= @sql_int_type %> NOT NULL, `dept_no` varchar(4) NOT NULL, `from_date` date NOT NULL, `to_date` date NOT NULL) ENGINE=InnoDB
|
223
234
|
CREATE INDEX `dept_no` USING btree ON `dept_emp` (`dept_no`)
|
224
235
|
CREATE INDEX `emp_no` USING btree ON `dept_emp` (`emp_no`)
|
225
|
-
CREATE TABLE `dept_manager` (`dept_no` varchar(4) NOT NULL, `emp_no`
|
236
|
+
CREATE TABLE `dept_manager` (`dept_no` varchar(4) NOT NULL, `emp_no` <%= @sql_int_type %> NOT NULL, `from_date` date NOT NULL, `to_date` date NOT NULL) ENGINE=InnoDB
|
226
237
|
CREATE INDEX `dept_no` USING btree ON `dept_manager` (`dept_no`)
|
227
238
|
CREATE INDEX `emp_no` USING btree ON `dept_manager` (`emp_no`)
|
228
|
-
CREATE TABLE `employee_clubs` (`id`
|
239
|
+
CREATE TABLE `employee_clubs` (`id` <%= @sql_int_pk_type %>, `emp_no` <%= @sql_uint_type %> NOT NULL, `club_id` <%= @sql_uint_type %> NOT NULL) ENGINE=InnoDB
|
229
240
|
CREATE INDEX `idx_emp_no_club_id` USING btree ON `employee_clubs` (`emp_no`, `club_id`)
|
230
|
-
CREATE TABLE `employees` (`emp_no`
|
231
|
-
CREATE TABLE `salaries` (`emp_no`
|
241
|
+
CREATE TABLE `employees` (`emp_no` <%= @sql_int_pk_type %>, `birth_date` date NOT NULL, `first_name` varchar(14) NOT NULL, `last_name` varchar(16) NOT NULL, `gender` varchar(1) NOT NULL, `hire_date` date NOT NULL) ENGINE=InnoDB
|
242
|
+
CREATE TABLE `salaries` (`emp_no` <%= @sql_int_type %> NOT NULL, `salary` <%= @sql_int_type %> NOT NULL, `from_date` date NOT NULL, `to_date` date NOT NULL) ENGINE=InnoDB
|
232
243
|
CREATE INDEX `emp_no` USING btree ON `salaries` (`emp_no`)
|
233
|
-
CREATE TABLE `titles` (`emp_no`
|
244
|
+
CREATE TABLE `titles` (`emp_no` <%= @sql_int_type %> NOT NULL, `title` varchar(50) NOT NULL, `from_date` date NOT NULL, `to_date` date) ENGINE=InnoDB
|
234
245
|
CREATE INDEX `emp_no` USING btree ON `titles` (`emp_no`)
|
235
|
-
|
246
|
+
EOS
|
236
247
|
}
|
237
248
|
end
|
238
249
|
end
|
239
|
-
end
|
@@ -1,15 +1,26 @@
|
|
1
|
-
unless postgresql?
|
2
1
|
describe 'Ridgepole::Client#diff -> migrate' do
|
2
|
+
let(:template_variables) {
|
3
|
+
opts = {
|
4
|
+
unsigned: {}
|
5
|
+
}
|
6
|
+
|
7
|
+
if condition(:mysql_awesome_enabled)
|
8
|
+
opts[:unsigned] = {unsigned: true}
|
9
|
+
end
|
10
|
+
|
11
|
+
opts
|
12
|
+
}
|
13
|
+
|
3
14
|
context 'when rename column' do
|
4
15
|
let(:actual_dsl) {
|
5
|
-
<<-
|
6
|
-
create_table "clubs"
|
16
|
+
erbh(<<-EOS, template_variables)
|
17
|
+
create_table "clubs", <%= {force: :cascade}.unshift(@unsigned).i %> do |t|
|
7
18
|
t.string "name", limit: 255, default: "", null: false
|
8
19
|
end
|
9
20
|
|
10
21
|
add_index "clubs", ["name"], name: "idx_name", unique: true, using: :btree
|
11
22
|
|
12
|
-
create_table "departments", primary_key: "dept_no"
|
23
|
+
create_table "departments", primary_key: "dept_no", <%= {force: :cascade}.unshift(@unsigned).i %> do |t|
|
13
24
|
t.string "dept_name", limit: 40, null: false
|
14
25
|
end
|
15
26
|
|
@@ -35,14 +46,14 @@ describe 'Ridgepole::Client#diff -> migrate' do
|
|
35
46
|
add_index "dept_manager", ["dept_no"], name: "dept_no", using: :btree
|
36
47
|
add_index "dept_manager", ["emp_no"], name: "emp_no", using: :btree
|
37
48
|
|
38
|
-
create_table "employee_clubs"
|
39
|
-
t.integer "emp_no", limit: 4, null: false
|
40
|
-
t.integer "club_id", limit: 4, null: false
|
49
|
+
create_table "employee_clubs", <%= {force: :cascade}.unshift(@unsigned).i %> do |t|
|
50
|
+
t.integer "emp_no", <%= {limit: 4, null: false}.push(@unsigned).i %>
|
51
|
+
t.integer "club_id", <%= {limit: 4, null: false}.push(@unsigned).i %>
|
41
52
|
end
|
42
53
|
|
43
54
|
add_index "employee_clubs", ["emp_no", "club_id"], name: "idx_emp_no_club_id", using: :btree
|
44
55
|
|
45
|
-
create_table "employees", primary_key: "emp_no"
|
56
|
+
create_table "employees", primary_key: "emp_no", <%= {force: :cascade}.unshift(@unsigned).i %> do |t|
|
46
57
|
t.date "birth_date", null: false
|
47
58
|
t.string "first_name", limit: 14, null: false
|
48
59
|
t.string "last_name", limit: 16, null: false
|
@@ -67,18 +78,18 @@ describe 'Ridgepole::Client#diff -> migrate' do
|
|
67
78
|
end
|
68
79
|
|
69
80
|
add_index "titles", ["emp_no"], name: "emp_no", using: :btree
|
70
|
-
|
81
|
+
EOS
|
71
82
|
}
|
72
83
|
|
73
84
|
let(:expected_dsl) {
|
74
|
-
<<-
|
75
|
-
create_table "clubs"
|
85
|
+
erbh(<<-EOS, template_variables)
|
86
|
+
create_table "clubs", <%= {force: :cascade}.unshift(@unsigned).i %> do |t|
|
76
87
|
t.string "name", limit: 255, default: "", null: false
|
77
88
|
end
|
78
89
|
|
79
90
|
add_index "clubs", ["name"], name: "idx_name", unique: true, using: :btree
|
80
91
|
|
81
|
-
create_table "departments", primary_key: "dept_no"
|
92
|
+
create_table "departments", primary_key: "dept_no", <%= {force: :cascade}.unshift(@unsigned).i %> do |t|
|
82
93
|
t.string "dept_name", limit: 40, null: false
|
83
94
|
end
|
84
95
|
|
@@ -104,14 +115,14 @@ describe 'Ridgepole::Client#diff -> migrate' do
|
|
104
115
|
add_index "dept_manager", ["dept_no"], name: "dept_no", using: :btree
|
105
116
|
add_index "dept_manager", ["emp_no"], name: "emp_no", using: :btree
|
106
117
|
|
107
|
-
create_table "employee_clubs"
|
108
|
-
t.integer "emp_no", limit: 4, null: false
|
109
|
-
t.integer "club_id", limit: 4, null: false
|
118
|
+
create_table "employee_clubs", <%= {force: :cascade}.unshift(@unsigned).i %> do |t|
|
119
|
+
t.integer "emp_no", <%= {limit: 4, null: false}.push(@unsigned).i %>
|
120
|
+
t.integer "club_id", <%= {limit: 4, null: false}.push(@unsigned).i %>
|
110
121
|
end
|
111
122
|
|
112
123
|
add_index "employee_clubs", ["emp_no", "club_id"], name: "idx_emp_no_club_id", using: :btree
|
113
124
|
|
114
|
-
create_table "employees", primary_key: "emp_no"
|
125
|
+
create_table "employees", primary_key: "emp_no", <%= {force: :cascade}.unshift(@unsigned).i %> do |t|
|
115
126
|
t.date "birth_date", null: false
|
116
127
|
t.string "first_name", limit: 14, null: false
|
117
128
|
t.string "last_name", limit: 16, null: false
|
@@ -136,7 +147,7 @@ describe 'Ridgepole::Client#diff -> migrate' do
|
|
136
147
|
end
|
137
148
|
|
138
149
|
add_index "titles", ["emp_no"], name: "emp_no", using: :btree
|
139
|
-
|
150
|
+
EOS
|
140
151
|
}
|
141
152
|
|
142
153
|
before { subject.diff(actual_dsl).migrate }
|
@@ -145,28 +156,28 @@ describe 'Ridgepole::Client#diff -> migrate' do
|
|
145
156
|
it {
|
146
157
|
delta = subject.diff(expected_dsl)
|
147
158
|
expect(delta.differ?).to be_truthy
|
148
|
-
expect(subject.dump).to
|
159
|
+
expect(subject.dump).to match_fuzzy actual_dsl
|
149
160
|
delta.migrate
|
150
|
-
expect(subject.dump).to
|
161
|
+
expect(subject.dump).to match_fuzzy expected_dsl.gsub(/\s*,\s*renamed_from:.*$/, '')
|
151
162
|
}
|
152
163
|
|
153
164
|
it {
|
154
165
|
delta = Ridgepole::Client.diff(actual_dsl, expected_dsl, reverse: true)
|
155
166
|
expect(delta.differ?).to be_truthy
|
156
|
-
expect(delta.script).to
|
167
|
+
expect(delta.script).to match_fuzzy <<-EOS
|
157
168
|
rename_column("dept_emp", "from_date2", "from_date")
|
158
169
|
|
159
170
|
rename_column("dept_manager", "to_date2", "to_date")
|
160
171
|
|
161
172
|
rename_column("employees", "gender2", "gender")
|
162
|
-
|
173
|
+
EOS
|
163
174
|
}
|
164
175
|
|
165
176
|
it {
|
166
177
|
delta = client(:bulk_change => true).diff(expected_dsl)
|
167
178
|
expect(delta.differ?).to be_truthy
|
168
|
-
expect(subject.dump).to
|
169
|
-
expect(delta.script).to
|
179
|
+
expect(subject.dump).to match_fuzzy actual_dsl
|
180
|
+
expect(delta.script).to match_fuzzy <<-EOS
|
170
181
|
change_table("dept_emp", {:bulk => true}) do |t|
|
171
182
|
t.rename("from_date", "from_date2")
|
172
183
|
end
|
@@ -178,9 +189,9 @@ describe 'Ridgepole::Client#diff -> migrate' do
|
|
178
189
|
change_table("employees", {:bulk => true}) do |t|
|
179
190
|
t.rename("gender", "gender2")
|
180
191
|
end
|
181
|
-
|
192
|
+
EOS
|
182
193
|
delta.migrate
|
183
|
-
expect(subject.dump).to
|
194
|
+
expect(subject.dump).to match_fuzzy expected_dsl.gsub(/\s*,\s*renamed_from:.*$/, '')
|
184
195
|
}
|
185
196
|
end
|
186
197
|
|
@@ -189,7 +200,7 @@ describe 'Ridgepole::Client#diff -> migrate' do
|
|
189
200
|
subject { client }
|
190
201
|
|
191
202
|
let(:dsl) {
|
192
|
-
<<-
|
203
|
+
<<-EOS
|
193
204
|
create_table "employees", primary_key: "emp_no", force: :cascade do |t|
|
194
205
|
t.date "birth_date", null: false
|
195
206
|
t.string "first_name", limit: 14, null: false
|
@@ -197,7 +208,7 @@ describe 'Ridgepole::Client#diff -> migrate' do
|
|
197
208
|
t.string "gender2", limit: 1, null: false, renamed_from: 'age'
|
198
209
|
t.date "hire_date", null: false
|
199
210
|
end
|
200
|
-
|
211
|
+
EOS
|
201
212
|
}
|
202
213
|
|
203
214
|
it {
|
@@ -207,4 +218,3 @@ describe 'Ridgepole::Client#diff -> migrate' do
|
|
207
218
|
}
|
208
219
|
end
|
209
220
|
end
|
210
|
-
end
|
@@ -1,15 +1,26 @@
|
|
1
|
-
unless postgresql?
|
2
1
|
describe 'Ridgepole::Client#diff -> migrate' do
|
2
|
+
let(:template_variables) {
|
3
|
+
opts = {
|
4
|
+
unsigned: {}
|
5
|
+
}
|
6
|
+
|
7
|
+
if condition(:mysql_awesome_enabled)
|
8
|
+
opts[:unsigned] = {unsigned: true}
|
9
|
+
end
|
10
|
+
|
11
|
+
opts
|
12
|
+
}
|
13
|
+
|
3
14
|
context 'when rename table' do
|
4
15
|
let(:actual_dsl) {
|
5
|
-
<<-
|
6
|
-
create_table "clubs"
|
16
|
+
erbh(<<-EOS, template_variables)
|
17
|
+
create_table "clubs", <%= {force: :cascade}.unshift(@unsigned).i %> do |t|
|
7
18
|
t.string "name", limit: 255, default: "", null: false
|
8
19
|
end
|
9
20
|
|
10
21
|
add_index "clubs", ["name"], name: "idx_name", unique: true, using: :btree
|
11
22
|
|
12
|
-
create_table "departments", primary_key: "dept_no"
|
23
|
+
create_table "departments", primary_key: "dept_no", <%= {force: :cascade}.unshift(@unsigned).i %> do |t|
|
13
24
|
t.string "dept_name", limit: 40, null: false
|
14
25
|
end
|
15
26
|
|
@@ -35,14 +46,14 @@ describe 'Ridgepole::Client#diff -> migrate' do
|
|
35
46
|
add_index "dept_manager", ["dept_no"], name: "dept_no", using: :btree
|
36
47
|
add_index "dept_manager", ["emp_no"], name: "emp_no", using: :btree
|
37
48
|
|
38
|
-
create_table "employee_clubs"
|
39
|
-
t.integer "emp_no", limit: 4, null: false
|
40
|
-
t.integer "club_id", limit: 4, null: false
|
49
|
+
create_table "employee_clubs", <%= {force: :cascade}.unshift(@unsigned).i %> do |t|
|
50
|
+
t.integer "emp_no", <%= {limit: 4, null: false}.push(@unsigned).i %>
|
51
|
+
t.integer "club_id", <%= {limit: 4, null: false}.push(@unsigned).i %>
|
41
52
|
end
|
42
53
|
|
43
54
|
add_index "employee_clubs", ["emp_no", "club_id"], name: "idx_emp_no_club_id", using: :btree
|
44
55
|
|
45
|
-
create_table "employees", primary_key: "emp_no"
|
56
|
+
create_table "employees", primary_key: "emp_no", <%= {force: :cascade}.unshift(@unsigned).i %> do |t|
|
46
57
|
t.date "birth_date", null: false
|
47
58
|
t.string "first_name", limit: 14, null: false
|
48
59
|
t.string "last_name", limit: 16, null: false
|
@@ -67,18 +78,18 @@ describe 'Ridgepole::Client#diff -> migrate' do
|
|
67
78
|
end
|
68
79
|
|
69
80
|
add_index "titles", ["emp_no"], name: "emp_no", using: :btree
|
70
|
-
|
81
|
+
EOS
|
71
82
|
}
|
72
83
|
|
73
84
|
let(:expected_dsl) {
|
74
|
-
<<-
|
75
|
-
create_table "clubs"
|
85
|
+
erbh(<<-EOS, template_variables)
|
86
|
+
create_table "clubs", <%= {force: :cascade}.unshift(@unsigned).i %> do |t|
|
76
87
|
t.string "name", limit: 255, default: "", null: false
|
77
88
|
end
|
78
89
|
|
79
90
|
add_index "clubs", ["name"], name: "idx_name", unique: true, using: :btree
|
80
91
|
|
81
|
-
create_table "departments", primary_key: "dept_no"
|
92
|
+
create_table "departments", primary_key: "dept_no", <%= {force: :cascade}.unshift(@unsigned).i %> do |t|
|
82
93
|
t.string "dept_name", limit: 40, null: false
|
83
94
|
end
|
84
95
|
|
@@ -104,14 +115,14 @@ describe 'Ridgepole::Client#diff -> migrate' do
|
|
104
115
|
add_index "dept_manager", ["dept_no"], name: "dept_no", using: :btree
|
105
116
|
add_index "dept_manager", ["emp_no"], name: "emp_no", using: :btree
|
106
117
|
|
107
|
-
create_table "employee_clubs"
|
108
|
-
t.integer "emp_no", limit: 4, null: false
|
109
|
-
t.integer "club_id", limit: 4, null: false
|
118
|
+
create_table "employee_clubs", <%= {force: :cascade}.unshift(@unsigned).i %> do |t|
|
119
|
+
t.integer "emp_no", <%= {limit: 4, null: false}.push(@unsigned).i %>
|
120
|
+
t.integer "club_id", <%= {limit: 4, null: false}.push(@unsigned).i %>
|
110
121
|
end
|
111
122
|
|
112
123
|
add_index "employee_clubs", ["emp_no", "club_id"], name: "idx_emp_no_club_id", using: :btree
|
113
124
|
|
114
|
-
create_table "employees2", primary_key: "emp_no"
|
125
|
+
create_table "employees2", primary_key: "emp_no", <%= {force: :cascade}.unshift(@unsigned).i %>, renamed_from: 'employees' do |t|
|
115
126
|
t.date "birth_date", null: false
|
116
127
|
t.string "first_name", limit: 14, null: false
|
117
128
|
t.string "last_name", limit: 16, null: false
|
@@ -136,7 +147,7 @@ describe 'Ridgepole::Client#diff -> migrate' do
|
|
136
147
|
end
|
137
148
|
|
138
149
|
add_index "titles", ["emp_no"], name: "emp_no", using: :btree
|
139
|
-
|
150
|
+
EOS
|
140
151
|
}
|
141
152
|
|
142
153
|
before { subject.diff(actual_dsl).migrate }
|
@@ -145,24 +156,24 @@ describe 'Ridgepole::Client#diff -> migrate' do
|
|
145
156
|
it {
|
146
157
|
delta = subject.diff(expected_dsl)
|
147
158
|
expect(delta.differ?).to be_truthy
|
148
|
-
expect(subject.dump).to
|
159
|
+
expect(subject.dump).to match_fuzzy actual_dsl
|
149
160
|
delta.migrate
|
150
|
-
expect(subject.dump).to
|
161
|
+
expect(subject.dump).to match_fuzzy expected_dsl.gsub(/, renamed_from: 'employees'/, '')
|
151
162
|
}
|
152
163
|
|
153
164
|
it {
|
154
165
|
delta = Ridgepole::Client.diff(actual_dsl, expected_dsl, reverse: true)
|
155
166
|
expect(delta.differ?).to be_truthy
|
156
|
-
expect(delta.script).to
|
167
|
+
expect(delta.script).to match_fuzzy <<-EOS
|
157
168
|
rename_table("employees2", "employees")
|
158
|
-
|
169
|
+
EOS
|
159
170
|
}
|
160
171
|
end
|
161
172
|
|
162
173
|
context 'when rename table (dry-run)' do
|
163
174
|
let(:actual_dsl) {
|
164
|
-
<<-
|
165
|
-
create_table "employees", primary_key: "emp_no"
|
175
|
+
erbh(<<-EOS, template_variables)
|
176
|
+
create_table "employees", primary_key: "emp_no", <%= {force: :cascade}.unshift(@unsigned).i %> do |t|
|
166
177
|
t.date "birth_date", null: false
|
167
178
|
t.string "first_name", limit: 14, null: false
|
168
179
|
t.string "last_name", limit: 16, null: false
|
@@ -171,12 +182,12 @@ describe 'Ridgepole::Client#diff -> migrate' do
|
|
171
182
|
end
|
172
183
|
|
173
184
|
add_index "employees", ["first_name"], name: "first_name", using: :btree
|
174
|
-
|
185
|
+
EOS
|
175
186
|
}
|
176
187
|
|
177
188
|
let(:expected_dsl) {
|
178
|
-
<<-
|
179
|
-
create_table "employees2", primary_key: "emp_no"
|
189
|
+
erbh(<<-EOS, template_variables)
|
190
|
+
create_table "employees2", primary_key: "emp_no", <%= {force: :cascade}.unshift(@unsigned).i %>, renamed_from: 'employees' do |t|
|
180
191
|
t.date "birth_date", null: false
|
181
192
|
t.string "first_name", limit: 14, null: false
|
182
193
|
t.string "last_name", limit: 16, null: false
|
@@ -185,7 +196,7 @@ describe 'Ridgepole::Client#diff -> migrate' do
|
|
185
196
|
end
|
186
197
|
|
187
198
|
add_index "employees2", ["first_name"], name: "first_name", using: :btree
|
188
|
-
|
199
|
+
EOS
|
189
200
|
}
|
190
201
|
|
191
202
|
before { subject.diff(actual_dsl).migrate }
|
@@ -194,9 +205,9 @@ describe 'Ridgepole::Client#diff -> migrate' do
|
|
194
205
|
it {
|
195
206
|
delta = subject.diff(expected_dsl)
|
196
207
|
expect(delta.differ?).to be_truthy
|
197
|
-
expect(subject.dump).to
|
208
|
+
expect(subject.dump).to match_fuzzy actual_dsl
|
198
209
|
delta.migrate(noop: true)
|
199
|
-
expect(subject.dump).to
|
210
|
+
expect(subject.dump).to match_fuzzy actual_dsl
|
200
211
|
}
|
201
212
|
end
|
202
213
|
|
@@ -205,15 +216,15 @@ describe 'Ridgepole::Client#diff -> migrate' do
|
|
205
216
|
subject { client }
|
206
217
|
|
207
218
|
let(:dsl) {
|
208
|
-
<<-
|
209
|
-
create_table "employees2", primary_key: "emp_no"
|
219
|
+
erbh(<<-EOS, template_variables)
|
220
|
+
create_table "employees2", primary_key: "emp_no", <%= {force: :cascade}.unshift(@unsigned).i %>, renamed_from: 'not_employees' do |t|
|
210
221
|
t.date "birth_date", null: false
|
211
222
|
t.string "first_name", limit: 14, null: false
|
212
223
|
t.string "last_name", limit: 16, null: false
|
213
224
|
t.string "gender", limit: 1, null: false
|
214
225
|
t.date "hire_date", null: false
|
215
226
|
end
|
216
|
-
|
227
|
+
EOS
|
217
228
|
}
|
218
229
|
|
219
230
|
it {
|
@@ -224,4 +235,3 @@ describe 'Ridgepole::Client#diff -> migrate' do
|
|
224
235
|
}
|
225
236
|
end
|
226
237
|
end
|
227
|
-
end
|
@@ -1,28 +1,39 @@
|
|
1
|
-
unless postgresql?
|
2
1
|
describe 'Ridgepole::Client#diff -> migrate' do
|
2
|
+
let(:template_variables) {
|
3
|
+
opts = {
|
4
|
+
unsigned: {}
|
5
|
+
}
|
6
|
+
|
7
|
+
if condition(:mysql_awesome_enabled)
|
8
|
+
opts[:unsigned] = {unsigned: true}
|
9
|
+
end
|
10
|
+
|
11
|
+
opts
|
12
|
+
}
|
13
|
+
|
3
14
|
context 'when database and definition are same (default null / nothing -> null:true)' do
|
4
15
|
let(:actual_dsl) {
|
5
|
-
<<-
|
6
|
-
create_table "employees", primary_key: "emp_no"
|
16
|
+
erbh(<<-EOS, template_variables)
|
17
|
+
create_table "employees", primary_key: "emp_no", <%= {force: :cascade}.unshift(@unsigned).i %> do |t|
|
7
18
|
t.date "birth_date", null: false
|
8
19
|
t.string "first_name", limit: 14, null: false
|
9
20
|
t.string "last_name", limit: 16, null: false
|
10
21
|
t.string "gender", limit: 1, null: false
|
11
22
|
t.date "hire_date"
|
12
23
|
end
|
13
|
-
|
24
|
+
EOS
|
14
25
|
}
|
15
26
|
|
16
27
|
let(:expected_dsl) {
|
17
|
-
<<-
|
18
|
-
create_table "employees", primary_key: "emp_no"
|
28
|
+
erbh(<<-EOS, template_variables)
|
29
|
+
create_table "employees", primary_key: "emp_no", <%= {force: :cascade}.unshift(@unsigned).i %> do |t|
|
19
30
|
t.date "birth_date", null: false
|
20
31
|
t.string "first_name", limit: 14, null: false
|
21
32
|
t.string "last_name", limit: 16, null: false
|
22
33
|
t.string "gender", limit: 1, null: false
|
23
34
|
t.date "hire_date", null: true
|
24
35
|
end
|
25
|
-
|
36
|
+
EOS
|
26
37
|
}
|
27
38
|
|
28
39
|
before { subject.diff(actual_dsl).migrate }
|
@@ -31,35 +42,35 @@ describe 'Ridgepole::Client#diff -> migrate' do
|
|
31
42
|
it {
|
32
43
|
delta = subject.diff(expected_dsl)
|
33
44
|
expect(delta.differ?).to be_falsey
|
34
|
-
expect(subject.dump).to
|
45
|
+
expect(subject.dump).to match_fuzzy actual_dsl
|
35
46
|
delta.migrate
|
36
|
-
expect(subject.dump).to
|
47
|
+
expect(subject.dump).to match_fuzzy expected_dsl.gsub(/\s*,\s*null: true/, '')
|
37
48
|
}
|
38
49
|
end
|
39
50
|
|
40
51
|
context 'when database and definition are same (default null / null:true -> nothing)' do
|
41
52
|
let(:actual_dsl) {
|
42
|
-
<<-
|
43
|
-
create_table "employees", primary_key: "emp_no"
|
53
|
+
erbh(<<-EOS, template_variables)
|
54
|
+
create_table "employees", primary_key: "emp_no", <%= {force: :cascade}.unshift(@unsigned).i %> do |t|
|
44
55
|
t.date "birth_date", null: false
|
45
56
|
t.string "first_name", limit: 14, null: false
|
46
57
|
t.string "last_name", limit: 16, null: false
|
47
58
|
t.string "gender", limit: 1, null: false
|
48
59
|
t.date "hire_date", null: true
|
49
60
|
end
|
50
|
-
|
61
|
+
EOS
|
51
62
|
}
|
52
63
|
|
53
64
|
let(:expected_dsl) {
|
54
|
-
<<-
|
55
|
-
create_table "employees", primary_key: "emp_no"
|
65
|
+
erbh(<<-EOS, template_variables)
|
66
|
+
create_table "employees", primary_key: "emp_no", <%= {force: :cascade}.unshift(@unsigned).i %> do |t|
|
56
67
|
t.date "birth_date", null: false
|
57
68
|
t.string "first_name", limit: 14, null: false
|
58
69
|
t.string "last_name", limit: 16, null: false
|
59
70
|
t.string "gender", limit: 1, null: false
|
60
71
|
t.date "hire_date"
|
61
72
|
end
|
62
|
-
|
73
|
+
EOS
|
63
74
|
}
|
64
75
|
|
65
76
|
before { subject.diff(actual_dsl).migrate }
|
@@ -68,10 +79,9 @@ describe 'Ridgepole::Client#diff -> migrate' do
|
|
68
79
|
it {
|
69
80
|
delta = subject.diff(expected_dsl)
|
70
81
|
expect(delta.differ?).to be_falsey
|
71
|
-
expect(subject.dump).to
|
82
|
+
expect(subject.dump).to match_fuzzy actual_dsl.gsub(/\s*,\s*null: true/, '')
|
72
83
|
delta.migrate
|
73
|
-
expect(subject.dump).to
|
84
|
+
expect(subject.dump).to match_fuzzy expected_dsl
|
74
85
|
}
|
75
86
|
end
|
76
87
|
end
|
77
|
-
end
|