ridgepole 0.6.4 → 0.6.5.beta

Sign up to get free protection for your applications and to get access to all the features.
Files changed (105) hide show
  1. checksums.yaml +4 -4
  2. data/.gitignore +1 -0
  3. data/.travis.yml +18 -8
  4. data/Appraisals +8 -0
  5. data/README.md +26 -2
  6. data/docker-compose.yml +12 -0
  7. data/gemfiles/activerecord_4.2.gemfile +8 -0
  8. data/gemfiles/activerecord_5.0.gemfile +7 -0
  9. data/lib/ridgepole/diff.rb +3 -1
  10. data/lib/ridgepole/version.rb +1 -1
  11. data/ridgepole.gemspec +6 -2
  12. data/spec/cli_helper.rb +63 -0
  13. data/spec/mysql/bigint_pk/bigint_pk_spec.rb +45 -0
  14. data/spec/mysql/cli/config_spec.rb +0 -2
  15. data/spec/mysql/cli/ridgepole_spec.rb +58 -56
  16. data/spec/mysql/collation/collation_spec.rb +134 -138
  17. data/spec/mysql/diff/diff2_spec.rb +1 -3
  18. data/spec/mysql/diff/diff_spec.rb +1 -3
  19. data/spec/mysql/dump/dump_class_method_spec.rb +29 -11
  20. data/spec/mysql/dump/dump_some_tables_spec.rb +18 -8
  21. data/spec/mysql/dump/dump_spec.rb +28 -10
  22. data/spec/mysql/dump/dump_without_table_options_spec.rb +29 -33
  23. data/spec/mysql/fk/migrate_change_fk_spec.rb +2 -4
  24. data/spec/mysql/fk/migrate_create_fk_spec.rb +39 -29
  25. data/spec/mysql/fk/migrate_drop_fk_spec.rb +20 -22
  26. data/spec/mysql/migrate/check_orphan_index_spec.rb +2 -4
  27. data/spec/mysql/migrate/migrate_add_column2_spec.rb +33 -26
  28. data/spec/mysql/migrate/migrate_add_column_spec.rb +32 -22
  29. data/spec/mysql/migrate/migrate_add_column_with_alter_extra_spec.rb +26 -16
  30. data/spec/mysql/migrate/migrate_add_column_with_script_spec.rb +27 -17
  31. data/spec/mysql/migrate/migrate_change_column2_spec.rb +26 -16
  32. data/spec/mysql/migrate/migrate_change_column3_spec.rb +54 -44
  33. data/spec/mysql/migrate/migrate_change_column4_spec.rb +8 -10
  34. data/spec/mysql/migrate/migrate_change_column5_spec.rb +32 -22
  35. data/spec/mysql/migrate/migrate_change_column6_spec.rb +28 -30
  36. data/spec/mysql/migrate/migrate_change_column_default_spec.rb +34 -36
  37. data/spec/mysql/migrate/migrate_change_column_float_spec.rb +10 -12
  38. data/spec/mysql/migrate/migrate_change_column_spec.rb +41 -29
  39. data/spec/mysql/migrate/migrate_change_index2_spec.rb +12 -14
  40. data/spec/mysql/migrate/migrate_change_index3_spec.rb +24 -26
  41. data/spec/mysql/migrate/migrate_change_index4_spec.rb +34 -24
  42. data/spec/mysql/migrate/migrate_change_index5_spec.rb +26 -16
  43. data/spec/mysql/migrate/migrate_change_index6_spec.rb +38 -28
  44. data/spec/mysql/migrate/migrate_change_index_spec.rb +39 -29
  45. data/spec/mysql/migrate/migrate_change_table_option_spec.rb +26 -13
  46. data/spec/mysql/migrate/migrate_create_index2_spec.rb +30 -20
  47. data/spec/mysql/migrate/migrate_create_index_spec.rb +28 -18
  48. data/spec/mysql/migrate/migrate_create_table_spec.rb +24 -14
  49. data/spec/mysql/migrate/migrate_create_table_with_options_spec.rb +4 -6
  50. data/spec/mysql/migrate/migrate_create_table_with_script_spec.rb +23 -13
  51. data/spec/mysql/migrate/migrate_drop_column_and_index2_spec.rb +32 -22
  52. data/spec/mysql/migrate/migrate_drop_column_and_index_spec.rb +35 -25
  53. data/spec/mysql/migrate/migrate_drop_column_spec.rb +36 -26
  54. data/spec/mysql/migrate/migrate_drop_index_spec.rb +28 -18
  55. data/spec/mysql/migrate/migrate_drop_table_spec.rb +29 -19
  56. data/spec/mysql/migrate/migrate_duplicate_index_spec.rb +2 -4
  57. data/spec/mysql/migrate/migrate_duplicate_table_spec.rb +2 -4
  58. data/spec/mysql/migrate/migrate_empty_spec.rb +24 -14
  59. data/spec/mysql/migrate/migrate_execute_spec.rb +78 -65
  60. data/spec/mysql/migrate/migrate_log_file_spec.rb +22 -12
  61. data/spec/mysql/migrate/migrate_merge_mode_spec.rb +31 -21
  62. data/spec/mysql/migrate/migrate_noop_spec.rb +55 -45
  63. data/spec/mysql/migrate/migrate_rename_column_spec.rb +38 -28
  64. data/spec/mysql/migrate/migrate_rename_table_spec.rb +43 -33
  65. data/spec/mysql/migrate/migrate_same_default_null_spec.rb +28 -18
  66. data/spec/mysql/migrate/migrate_same_spec.rb +26 -12
  67. data/spec/mysql/migrate/migrate_script_error_spec.rb +3 -5
  68. data/spec/mysql/migrate/migrate_skip_rename_column_spec.rb +30 -20
  69. data/spec/mysql/migrate/migrate_skip_rename_table_spec.rb +30 -20
  70. data/spec/mysql/migrate/migrate_with_ignore_tables_spec.rb +44 -46
  71. data/spec/mysql/migrate/migrate_with_pre_post_query_spec.rb +6 -8
  72. data/spec/mysql/migrate/migrate_with_tables_spec.rb +20 -22
  73. data/spec/mysql/migrate_/migrate_create_index_with_alter_spec.rb +22 -12
  74. data/spec/mysql/migrate_/migrate_drop_index_with_alter_spec.rb +22 -12
  75. data/spec/mysql/~default_name_fk/migrate_change_fk_spec.rb +8 -10
  76. data/spec/mysql/~default_name_fk/migrate_create_fk_spec.rb +39 -29
  77. data/spec/mysql/~default_name_fk/migrate_drop_fk_spec.rb +20 -22
  78. data/spec/postgresql/diff/diff_spec.rb +7 -9
  79. data/spec/postgresql/dump/dump_spec.rb +2 -4
  80. data/spec/postgresql/fk/migrate_change_fk_spec.rb +8 -10
  81. data/spec/postgresql/fk/migrate_create_fk_spec.rb +24 -26
  82. data/spec/postgresql/fk/migrate_drop_fk_spec.rb +21 -23
  83. data/spec/postgresql/migrate/migrate_add_column_spec.rb +19 -22
  84. data/spec/postgresql/migrate/migrate_change_column_default_spec.rb +6 -8
  85. data/spec/postgresql/migrate/migrate_change_column_spec.rb +17 -19
  86. data/spec/postgresql/migrate/migrate_change_index_spec.rb +11 -13
  87. data/spec/postgresql/migrate/migrate_create_table_spec.rb +6 -9
  88. data/spec/postgresql/migrate/migrate_drop_column_spec.rb +12 -14
  89. data/spec/postgresql/migrate/migrate_drop_column_with_index_spec.rb +12 -14
  90. data/spec/postgresql/migrate/migrate_drop_index_spec.rb +10 -12
  91. data/spec/postgresql/migrate/migrate_drop_table_spec.rb +7 -9
  92. data/spec/postgresql/migrate/migrate_ext_cols_spec.rb +6 -8
  93. data/spec/postgresql/migrate/migrate_rename_column_spec.rb +12 -14
  94. data/spec/postgresql/migrate/migrate_rename_table_spec.rb +14 -16
  95. data/spec/postgresql/migrate/migrate_same_spec.rb +4 -6
  96. data/spec/postgresql/~default_name_fk/migrate_change_fk_spec.rb +8 -10
  97. data/spec/postgresql/~default_name_fk/migrate_create_fk_spec.rb +24 -26
  98. data/spec/postgresql/~default_name_fk/migrate_drop_fk_spec.rb +20 -22
  99. data/spec/processing_for_travis.rb +9 -0
  100. data/spec/spec_condition.rb +24 -0
  101. data/spec/spec_const.rb +18 -0
  102. data/spec/spec_helper.rb +125 -196
  103. data/spec/string_ext.rb +0 -13
  104. metadata +106 -32
  105. data/spec/mysql/bigint_pk/bigint_pkspec.rb +0 -47
@@ -1,38 +1,52 @@
1
- unless postgresql?
2
1
  describe 'Ridgepole::Client#diff -> migrate' do
2
+ let(:template_variables) {
3
+ opts = {
4
+ unsigned: {},
5
+ sql_int_type: 'int(11)',
6
+ test_schema: TEST_SCHEMA,
7
+ }
8
+
9
+ if condition(:mysql_awesome_enabled)
10
+ opts[:unsigned] = {unsigned: true}
11
+ opts[:sql_int_type] = 'int(10) unsigned'
12
+ end
13
+
14
+ opts
15
+ }
16
+
3
17
  context 'when execute' do
4
18
  let(:dsl) {
5
- <<-RUBY
6
- create_table "authors"#{unsigned_if_enabled}, force: :cascade do |t|
19
+ erbh(<<-EOS, template_variables)
20
+ create_table "authors", <%= {force: :cascade}.unshift(@unsigned).i %> do |t|
7
21
  t.string "name", limit: 255, null: false
8
22
  end
9
23
 
10
- create_table "books"#{unsigned_if_enabled}, force: :cascade do |t|
24
+ create_table "books", <%= {force: :cascade}.unshift(@unsigned).i %> do |t|
11
25
  t.string "title", limit: 255, null: false
12
- t.integer "author_id", limit: 4, null: false#{unsigned_if_enabled}
26
+ t.integer "author_id", <%= {limit: 4, null: false}.push(@unsigned).i %>
13
27
  end
14
28
 
15
29
  add_index "books", ["author_id"], name: "idx_author_id", using: :btree
16
- RUBY
30
+ EOS
17
31
  }
18
32
 
19
33
  let(:dsl_with_execute) {
20
- <<-RUBY
34
+ erbh(<<-EOS, template_variables)
21
35
  create_table "authors", force: :cascade do |t|
22
36
  t.string "name", null: false
23
37
  end
24
38
 
25
39
  create_table "books", force: :cascade do |t|
26
40
  t.string "title", null: false
27
- t.integer "author_id", limit: 4, null: false#{unsigned_if_enabled}
41
+ t.integer "author_id", <%= {limit: 4, null: false}.push(@unsigned).i %>
28
42
  end
29
43
 
30
44
  add_index "books", ["author_id"], name: "idx_author_id", using: :btree
31
45
 
32
46
  execute("ALTER TABLE books ADD CONSTRAINT fk_author FOREIGN KEY (author_id) REFERENCES authors (id)") do |c|
33
- c.raw_connection.query("SELECT 1 FROM information_schema.key_column_usage WHERE TABLE_SCHEMA = '#{TEST_SCHEMA}' AND CONSTRAINT_NAME = 'fk_author' LIMIT 1").each.length.zero?
47
+ c.raw_connection.query("SELECT 1 FROM information_schema.key_column_usage WHERE TABLE_SCHEMA = '<%= @test_schema %>' AND CONSTRAINT_NAME = 'fk_author' LIMIT 1").each.length.zero?
34
48
  end
35
- RUBY
49
+ EOS
36
50
  }
37
51
 
38
52
  before { subject.diff(dsl).migrate }
@@ -41,40 +55,40 @@ describe 'Ridgepole::Client#diff -> migrate' do
41
55
  it {
42
56
  delta = subject.diff(dsl_with_execute)
43
57
  expect(delta.differ?).to be_truthy
44
- expect(subject.dump.delete_empty_lines).to eq dsl.strip_heredoc.strip.delete_empty_lines
58
+ expect(subject.dump).to match_fuzzy dsl
45
59
 
46
- expect(show_create_table(:books).strip).to eq <<-SQL.strip_heredoc.strip
60
+ expect(show_create_table(:books)).to match_fuzzy erbh(<<-EOS, template_variables)
47
61
  CREATE TABLE `books` (
48
- `id` #{if_mysql_awesome_enabled('int(10) unsigned', 'int(11)')} NOT NULL AUTO_INCREMENT,
62
+ `id` <%= @sql_int_type %> NOT NULL AUTO_INCREMENT,
49
63
  `title` varchar(255) NOT NULL,
50
- `author_id` #{if_mysql_awesome_enabled('int(10) unsigned', 'int(11)')} NOT NULL,
64
+ `author_id` <%= @sql_int_type %> NOT NULL,
51
65
  PRIMARY KEY (`id`),
52
66
  KEY `idx_author_id` (`author_id`) USING BTREE
53
67
  ) ENGINE=InnoDB DEFAULT CHARSET=utf8
54
- SQL
68
+ EOS
55
69
 
56
70
  delta.migrate
57
71
 
58
- expect(subject.dump.delete_empty_lines).to eq (dsl + (<<-RUBY)).strip_heredoc.strip.delete_empty_lines
72
+ expect(subject.dump).to match_fuzzy (dsl + (<<-EOS))
59
73
  add_foreign_key "books", "authors", name: "fk_author"
60
- RUBY
74
+ EOS
61
75
 
62
- expect(show_create_table(:books).strip).to eq <<-SQL.strip_heredoc.strip
76
+ expect(show_create_table(:books)).to match_fuzzy erbh(<<-EOS, template_variables)
63
77
  CREATE TABLE `books` (
64
- `id` #{if_mysql_awesome_enabled('int(10) unsigned', 'int(11)')} NOT NULL AUTO_INCREMENT,
78
+ `id` <%= @sql_int_type %> NOT NULL AUTO_INCREMENT,
65
79
  `title` varchar(255) NOT NULL,
66
- `author_id` #{if_mysql_awesome_enabled('int(10) unsigned', 'int(11)')} NOT NULL,
80
+ `author_id` <%= @sql_int_type %> NOT NULL,
67
81
  PRIMARY KEY (`id`),
68
82
  KEY `idx_author_id` (`author_id`) USING BTREE,
69
83
  CONSTRAINT `fk_author` FOREIGN KEY (`author_id`) REFERENCES `authors` (`id`)
70
84
  ) ENGINE=InnoDB DEFAULT CHARSET=utf8
71
- SQL
85
+ EOS
72
86
  }
73
87
  end
74
88
 
75
89
  context 'when not execute' do
76
90
  let(:dsl) {
77
- <<-RUBY
91
+ <<-EOS
78
92
  create_table "authors", force: :cascade do |t|
79
93
  t.string "name", limit: 255, null: false
80
94
  end
@@ -86,11 +100,11 @@ describe 'Ridgepole::Client#diff -> migrate' do
86
100
 
87
101
  add_index "books", ["author_id"], name: "idx_author_id", using: :btree
88
102
  add_foreign_key "books", "authors", name: "fk_author"
89
- RUBY
103
+ EOS
90
104
  }
91
105
 
92
106
  let(:dsl_with_execute) {
93
- <<-RUBY
107
+ erbh(<<-EOS, template_variables)
94
108
  create_table "authors", force: :cascade do |t|
95
109
  t.string "name", null: false
96
110
  end
@@ -103,11 +117,11 @@ describe 'Ridgepole::Client#diff -> migrate' do
103
117
  add_index "books", ["author_id"], name: "idx_author_id", using: :btree
104
118
 
105
119
  execute("ALTER TABLE books ADD CONSTRAINT fk_author FOREIGN KEY (author_id) REFERENCES authors (id)") do |c|
106
- c.raw_connection.query("SELECT 1 FROM information_schema.key_column_usage WHERE TABLE_SCHEMA = '#{TEST_SCHEMA}' AND CONSTRAINT_NAME = 'fk_author' LIMIT 1").each.length.zero?
120
+ c.raw_connection.query("SELECT 1 FROM information_schema.key_column_usage WHERE TABLE_SCHEMA = '<%= @test_schema %>' AND CONSTRAINT_NAME = 'fk_author' LIMIT 1").each.length.zero?
107
121
  end
108
122
 
109
123
  add_foreign_key "books", "authors", name: "fk_author"
110
- RUBY
124
+ EOS
111
125
  }
112
126
 
113
127
  before { subject.diff(dsl_with_execute).migrate }
@@ -116,9 +130,9 @@ describe 'Ridgepole::Client#diff -> migrate' do
116
130
  it {
117
131
  delta = subject.diff(dsl_with_execute)
118
132
  expect(delta.differ?).to be_truthy
119
- expect(subject.dump.delete_empty_lines).to eq dsl.strip_heredoc.strip.delete_empty_lines
133
+ expect(subject.dump).to match_fuzzy dsl
120
134
 
121
- expect(show_create_table(:books).strip).to eq <<-SQL.strip_heredoc.strip
135
+ expect(show_create_table(:books)).to match_fuzzy erbh(<<-EOS, template_variables)
122
136
  CREATE TABLE `books` (
123
137
  `id` int(11) NOT NULL AUTO_INCREMENT,
124
138
  `title` varchar(255) NOT NULL,
@@ -127,13 +141,13 @@ describe 'Ridgepole::Client#diff -> migrate' do
127
141
  KEY `idx_author_id` (`author_id`) USING BTREE,
128
142
  CONSTRAINT `fk_author` FOREIGN KEY (`author_id`) REFERENCES `authors` (`id`)
129
143
  ) ENGINE=InnoDB DEFAULT CHARSET=utf8
130
- SQL
144
+ EOS
131
145
 
132
146
  migrated, out = delta.migrate
133
147
  expect(migrated).to be_falsey
134
- expect(subject.dump.delete_empty_lines).to eq dsl.strip_heredoc.strip.delete_empty_lines
148
+ expect(subject.dump).to match_fuzzy dsl
135
149
 
136
- expect(show_create_table(:books).strip).to eq <<-SQL.strip_heredoc.strip
150
+ expect(show_create_table(:books)).to match_fuzzy erbh(<<-EOS, template_variables)
137
151
  CREATE TABLE `books` (
138
152
  `id` int(11) NOT NULL AUTO_INCREMENT,
139
153
  `title` varchar(255) NOT NULL,
@@ -142,43 +156,43 @@ describe 'Ridgepole::Client#diff -> migrate' do
142
156
  KEY `idx_author_id` (`author_id`) USING BTREE,
143
157
  CONSTRAINT `fk_author` FOREIGN KEY (`author_id`) REFERENCES `authors` (`id`)
144
158
  ) ENGINE=InnoDB DEFAULT CHARSET=utf8
145
- SQL
159
+ EOS
146
160
  }
147
161
  end
148
162
 
149
163
  context 'when execute (noop)' do
150
164
  let(:dsl) {
151
- <<-RUBY
152
- create_table "authors"#{unsigned_if_enabled}, force: :cascade do |t|
165
+ erbh(<<-EOS, template_variables)
166
+ create_table "authors", <%= {force: :cascade}.unshift(@unsigned).i %> do |t|
153
167
  t.string "name", limit: 255, null: false
154
168
  end
155
169
 
156
- create_table "books"#{unsigned_if_enabled}, force: :cascade do |t|
170
+ create_table "books", <%= {force: :cascade}.unshift(@unsigned).i %> do |t|
157
171
  t.string "title", limit: 255, null: false
158
- t.integer "author_id", limit: 4, null: false#{unsigned_if_enabled}
172
+ t.integer "author_id", <%= {limit: 4, null: false}.push(@unsigned).i %>
159
173
  end
160
174
 
161
175
  add_index "books", ["author_id"], name: "idx_author_id", using: :btree
162
- RUBY
176
+ EOS
163
177
  }
164
178
 
165
179
  let(:dsl_with_execute) {
166
- <<-RUBY
180
+ erbh(<<-EOS, template_variables)
167
181
  create_table "authors", force: :cascade do |t|
168
182
  t.string "name", null: false
169
183
  end
170
184
 
171
185
  create_table "books", force: :cascade do |t|
172
186
  t.string "title", null: false
173
- t.integer "author_id", limit: 4, null: false#{unsigned_if_enabled}
187
+ t.integer "author_id", <%= {limit: 4, null: false}.push(@unsigned).i %>
174
188
  end
175
189
 
176
190
  add_index "books", ["author_id"], name: "idx_author_id", using: :btree
177
191
 
178
192
  execute("ALTER TABLE books ADD CONSTRAINT fk_author FOREIGN KEY (author_id) REFERENCES authors (id)") do |c|
179
- c.raw_connection.query("SELECT 1 FROM information_schema.key_column_usage WHERE TABLE_SCHEMA = '#{TEST_SCHEMA}' AND CONSTRAINT_NAME = 'fk_author' LIMIT 1").each.length.zero?
193
+ c.raw_connection.query("SELECT 1 FROM information_schema.key_column_usage WHERE TABLE_SCHEMA = '<%= @test_schema %>' AND CONSTRAINT_NAME = 'fk_author' LIMIT 1").each.length.zero?
180
194
  end
181
- RUBY
195
+ EOS
182
196
  }
183
197
 
184
198
  before { subject.diff(dsl).migrate }
@@ -187,39 +201,39 @@ describe 'Ridgepole::Client#diff -> migrate' do
187
201
  it {
188
202
  delta = subject.diff(dsl_with_execute)
189
203
  expect(delta.differ?).to be_truthy
190
- expect(subject.dump.delete_empty_lines).to eq dsl.strip_heredoc.strip.delete_empty_lines
204
+ expect(subject.dump).to match_fuzzy dsl
191
205
 
192
- expect(show_create_table(:books).strip).to eq <<-SQL.strip_heredoc.strip
206
+ expect(show_create_table(:books)).to match_fuzzy erbh(<<-EOS, template_variables)
193
207
  CREATE TABLE `books` (
194
- `id` #{if_mysql_awesome_enabled('int(10) unsigned', 'int(11)')} NOT NULL AUTO_INCREMENT,
208
+ `id` <%= @sql_int_type %> NOT NULL AUTO_INCREMENT,
195
209
  `title` varchar(255) NOT NULL,
196
- `author_id` #{if_mysql_awesome_enabled('int(10) unsigned', 'int(11)')} NOT NULL,
210
+ `author_id` <%= @sql_int_type %> NOT NULL,
197
211
  PRIMARY KEY (`id`),
198
212
  KEY `idx_author_id` (`author_id`) USING BTREE
199
213
  ) ENGINE=InnoDB DEFAULT CHARSET=utf8
200
- SQL
214
+ EOS
201
215
 
202
216
  migrated, sql = delta.migrate(:noop => true)
203
217
  expect(migrated).to be_truthy
204
- expect(subject.dump.delete_empty_lines).to eq dsl.strip_heredoc.strip.delete_empty_lines
218
+ expect(subject.dump).to match_fuzzy dsl
205
219
 
206
- expect(sql.strip).to eq "ALTER TABLE books ADD CONSTRAINT fk_author FOREIGN KEY (author_id) REFERENCES authors (id)"
220
+ expect(sql).to match_fuzzy "ALTER TABLE books ADD CONSTRAINT fk_author FOREIGN KEY (author_id) REFERENCES authors (id)"
207
221
 
208
- expect(show_create_table(:books).strip).to eq <<-SQL.strip_heredoc.strip
222
+ expect(show_create_table(:books)).to match_fuzzy erbh(<<-EOS, template_variables)
209
223
  CREATE TABLE `books` (
210
- `id` #{if_mysql_awesome_enabled('int(10) unsigned', 'int(11)')} NOT NULL AUTO_INCREMENT,
224
+ `id` <%= @sql_int_type %> NOT NULL AUTO_INCREMENT,
211
225
  `title` varchar(255) NOT NULL,
212
- `author_id` #{if_mysql_awesome_enabled('int(10) unsigned', 'int(11)')} NOT NULL,
226
+ `author_id` <%= @sql_int_type %> NOT NULL,
213
227
  PRIMARY KEY (`id`),
214
228
  KEY `idx_author_id` (`author_id`) USING BTREE
215
229
  ) ENGINE=InnoDB DEFAULT CHARSET=utf8
216
- SQL
230
+ EOS
217
231
  }
218
232
  end
219
233
 
220
234
  context 'when not execute (noop)' do
221
235
  let(:dsl) {
222
- <<-RUBY
236
+ <<-EOS
223
237
  create_table "authors", force: :cascade do |t|
224
238
  t.string "name", limit: 255, null: false
225
239
  end
@@ -231,11 +245,11 @@ describe 'Ridgepole::Client#diff -> migrate' do
231
245
 
232
246
  add_index "books", ["author_id"], name: "idx_author_id", using: :btree
233
247
  add_foreign_key "books", "authors", name: "fk_author"
234
- RUBY
248
+ EOS
235
249
  }
236
250
 
237
251
  let(:dsl_with_execute) {
238
- <<-RUBY
252
+ erbh(<<-EOS, template_variables)
239
253
  create_table "authors", force: :cascade do |t|
240
254
  t.string "name", null: false
241
255
  end
@@ -248,11 +262,11 @@ describe 'Ridgepole::Client#diff -> migrate' do
248
262
  add_index "books", ["author_id"], name: "idx_author_id", using: :btree
249
263
 
250
264
  execute("ALTER TABLE books ADD CONSTRAINT fk_author FOREIGN KEY (author_id) REFERENCES authors (id)") do |c|
251
- c.raw_connection.query("SELECT 1 FROM information_schema.key_column_usage WHERE TABLE_SCHEMA = '#{TEST_SCHEMA}' AND CONSTRAINT_NAME = 'fk_author' LIMIT 1").each.length.zero?
265
+ c.raw_connection.query("SELECT 1 FROM information_schema.key_column_usage WHERE TABLE_SCHEMA = '<%= @test_schema %>' AND CONSTRAINT_NAME = 'fk_author' LIMIT 1").each.length.zero?
252
266
  end
253
267
 
254
268
  add_foreign_key "books", "authors", name: "fk_author"
255
- RUBY
269
+ EOS
256
270
  }
257
271
 
258
272
  before { subject.diff(dsl_with_execute).migrate }
@@ -261,9 +275,9 @@ describe 'Ridgepole::Client#diff -> migrate' do
261
275
  it {
262
276
  delta = subject.diff(dsl_with_execute)
263
277
  expect(delta.differ?).to be_truthy
264
- expect(subject.dump.delete_empty_lines).to eq dsl.strip_heredoc.strip.delete_empty_lines
278
+ expect(subject.dump).to match_fuzzy dsl
265
279
 
266
- expect(show_create_table(:books).strip).to eq <<-SQL.strip_heredoc.strip
280
+ expect(show_create_table(:books)).to match_fuzzy erbh(<<-EOS, template_variables)
267
281
  CREATE TABLE `books` (
268
282
  `id` int(11) NOT NULL AUTO_INCREMENT,
269
283
  `title` varchar(255) NOT NULL,
@@ -272,15 +286,15 @@ describe 'Ridgepole::Client#diff -> migrate' do
272
286
  KEY `idx_author_id` (`author_id`) USING BTREE,
273
287
  CONSTRAINT `fk_author` FOREIGN KEY (`author_id`) REFERENCES `authors` (`id`)
274
288
  ) ENGINE=InnoDB DEFAULT CHARSET=utf8
275
- SQL
289
+ EOS
276
290
 
277
291
  migrated, sql = delta.migrate(:noop => true)
278
292
  expect(migrated).to be_falsey
279
- expect(subject.dump.delete_empty_lines).to eq dsl.strip_heredoc.strip.delete_empty_lines
293
+ expect(subject.dump).to match_fuzzy dsl
280
294
 
281
- expect(sql.strip).to eq ""
295
+ expect(sql).to match_fuzzy ""
282
296
 
283
- expect(show_create_table(:books).strip).to eq <<-SQL.strip_heredoc.strip
297
+ expect(show_create_table(:books)).to match_fuzzy erbh(<<-EOS, template_variables)
284
298
  CREATE TABLE `books` (
285
299
  `id` int(11) NOT NULL AUTO_INCREMENT,
286
300
  `title` varchar(255) NOT NULL,
@@ -289,8 +303,7 @@ describe 'Ridgepole::Client#diff -> migrate' do
289
303
  KEY `idx_author_id` (`author_id`) USING BTREE,
290
304
  CONSTRAINT `fk_author` FOREIGN KEY (`author_id`) REFERENCES `authors` (`id`)
291
305
  ) ENGINE=InnoDB DEFAULT CHARSET=utf8
292
- SQL
306
+ EOS
293
307
  }
294
308
  end
295
309
  end
296
- 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 create table' do
4
15
  let(:dsl) {
5
- <<-RUBY
6
- create_table "clubs"#{unsigned_if_enabled}, force: :cascade do |t|
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"#{unsigned_if_enabled}, force: :cascade do |t|
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"#{unsigned_if_enabled}, force: :cascade do |t|
39
- t.integer "emp_no", limit: 4, null: false#{unsigned_if_enabled}
40
- t.integer "club_id", limit: 4, null: false#{unsigned_if_enabled}
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"#{unsigned_if_enabled}, force: :cascade do |t|
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,7 +78,7 @@ describe 'Ridgepole::Client#diff -> migrate' do
67
78
  end
68
79
 
69
80
  add_index "titles", ["emp_no"], name: "emp_no", using: :btree
70
- RUBY
81
+ EOS
71
82
  }
72
83
 
73
84
  let(:actual_dsl) {
@@ -84,12 +95,11 @@ describe 'Ridgepole::Client#diff -> migrate' do
84
95
  tempfile("#{File.basename __FILE__}.#{$$}") do |path|
85
96
  delta = client(log_file: path).diff(expected_dsl)
86
97
  expect(delta.differ?).to be_truthy
87
- expect(client.dump.delete_empty_lines).to eq actual_dsl.strip_heredoc.strip.delete_empty_lines
98
+ expect(client.dump).to match_fuzzy actual_dsl
88
99
  delta.migrate
89
- expect(client.dump.delete_empty_lines).to eq expected_dsl.strip_heredoc.strip.delete_empty_lines
100
+ expect(client.dump).to match_fuzzy expected_dsl
90
101
  expect(File.size(path)).to be > 0
91
102
  end
92
103
  }
93
104
  end
94
105
  end
95
- 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 marge table' do
4
15
  let(:actual_dsl) {
5
- <<-RUBY
6
- create_table "clubs"#{unsigned_if_enabled}, force: :cascade do |t|
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"#{unsigned_if_enabled}, force: :cascade do |t|
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"#{unsigned_if_enabled}, force: :cascade do |t|
39
- t.integer "emp_no", limit: 4, null: false#{unsigned_if_enabled}
40
- t.integer "club_id", limit: 4, null: false#{unsigned_if_enabled}
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"#{unsigned_if_enabled}, force: :cascade do |t|
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,22 +78,22 @@ describe 'Ridgepole::Client#diff -> migrate' do
67
78
  end
68
79
 
69
80
  add_index "titles", ["emp_no"], name: "emp_no", using: :btree
70
- RUBY
81
+ EOS
71
82
  }
72
83
 
73
84
  let(:expected_dsl) {
74
- <<-RUBY
75
- create_table "clubs"#{unsigned_if_enabled}, force: :cascade do |t|
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 "clubs2"#{unsigned_if_enabled}, force: :cascade do |t|
92
+ create_table "clubs2", <%= {force: :cascade}.unshift(@unsigned).i %> do |t|
82
93
  t.string "name2", limit: 255, default: "", null: false
83
94
  end
84
95
 
85
- create_table "departments", primary_key: "dept_no"#{unsigned_if_enabled}, force: :cascade do |t|
96
+ create_table "departments", primary_key: "dept_no", <%= {force: :cascade}.unshift(@unsigned).i %> do |t|
86
97
  t.string "dept_name", limit: 40, null: false
87
98
  end
88
99
 
@@ -108,14 +119,14 @@ describe 'Ridgepole::Client#diff -> migrate' do
108
119
  add_index "dept_manager", ["dept_no"], name: "dept_no", using: :btree
109
120
  add_index "dept_manager", ["emp_no"], name: "emp_no", using: :btree
110
121
 
111
- create_table "employee_clubs"#{unsigned_if_enabled}, force: :cascade do |t|
112
- t.integer "emp_no", limit: 4, null: false#{unsigned_if_enabled}
113
- t.integer "club_id", limit: 4, null: false#{unsigned_if_enabled}
122
+ create_table "employee_clubs", <%= {force: :cascade}.unshift(@unsigned).i %> do |t|
123
+ t.integer "emp_no", <%= {limit: 4, null: false}.push(@unsigned).i %>
124
+ t.integer "club_id", <%= {limit: 4, null: false}.push(@unsigned).i %>
114
125
  end
115
126
 
116
127
  add_index "employee_clubs", ["emp_no", "club_id"], name: "idx_emp_no_club_id", using: :btree
117
128
 
118
- create_table "employees", primary_key: "emp_no"#{unsigned_if_enabled}, force: :cascade do |t|
129
+ create_table "employees", primary_key: "emp_no", <%= {force: :cascade}.unshift(@unsigned).i %> do |t|
119
130
  t.date "birth_date", null: false
120
131
  t.string "first_name", limit: 14, null: false
121
132
  t.string "last_name", limit: 16, null: false
@@ -140,7 +151,7 @@ describe 'Ridgepole::Client#diff -> migrate' do
140
151
  end
141
152
 
142
153
  add_index "titles", ["emp_no"], name: "emp_no", using: :btree
143
- RUBY
154
+ EOS
144
155
  }
145
156
 
146
157
  before { subject.diff(actual_dsl).migrate }
@@ -149,10 +160,10 @@ describe 'Ridgepole::Client#diff -> migrate' do
149
160
  it {
150
161
  delta = subject.diff(expected_dsl.delete_create_table('clubs'))
151
162
  expect(delta.differ?).to be_truthy
152
- expect(subject.dump).to eq actual_dsl.strip_heredoc.strip
163
+ expect(subject.dump).to match_fuzzy actual_dsl
153
164
  delta.migrate
154
165
  # `clubs` table is not deleted
155
- expect(subject.dump).to eq expected_dsl.strip_heredoc.strip
166
+ expect(subject.dump).to match_fuzzy expected_dsl
156
167
  }
157
168
 
158
169
  it {
@@ -161,4 +172,3 @@ describe 'Ridgepole::Client#diff -> migrate' do
161
172
  }
162
173
  end
163
174
  end
164
- end