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,9 +1,20 @@
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 change index (unique: false)' do
4
15
  let(:actual_dsl) {
5
- <<-RUBY
6
- create_table "salaries"#{unsigned_if_enabled}, force: :cascade do |t|
16
+ erbh(<<-EOS, template_variables)
17
+ create_table "salaries", <%= {force: :cascade}.unshift(@unsigned).i %> do |t|
7
18
  t.integer "emp_no", limit: 4, null: false
8
19
  t.integer "salary", limit: 4, null: false
9
20
  t.date "from_date", null: false
@@ -11,12 +22,12 @@ describe 'Ridgepole::Client#diff -> migrate' do
11
22
  end
12
23
 
13
24
  add_index "salaries", ["emp_no", "id"], name: "emp_no", using: :btree
14
- RUBY
25
+ EOS
15
26
  }
16
27
 
17
28
  let(:expected_dsl) {
18
- <<-RUBY
19
- create_table "salaries"#{unsigned_if_enabled}, force: :cascade do |t|
29
+ erbh(<<-EOS, template_variables)
30
+ create_table "salaries", <%= {force: :cascade}.unshift(@unsigned).i %> do |t|
20
31
  t.integer "emp_no", limit: 4, null: false
21
32
  t.integer "salary", limit: 4, null: false
22
33
  t.date "from_date", null: false
@@ -24,7 +35,7 @@ describe 'Ridgepole::Client#diff -> migrate' do
24
35
  end
25
36
 
26
37
  add_index "salaries", ["emp_no", "id"], name: "emp_no", unique: false, using: :btree
27
- RUBY
38
+ EOS
28
39
  }
29
40
 
30
41
  before { subject.diff(actual_dsl).migrate }
@@ -38,8 +49,8 @@ describe 'Ridgepole::Client#diff -> migrate' do
38
49
 
39
50
  context 'when change index (unique: true)' do
40
51
  let(:actual_dsl) {
41
- <<-RUBY
42
- create_table "salaries"#{unsigned_if_enabled}, force: :cascade do |t|
52
+ erbh(<<-EOS, template_variables)
53
+ create_table "salaries", <%= {force: :cascade}.unshift(@unsigned).i %> do |t|
43
54
  t.integer "emp_no", limit: 4, null: false
44
55
  t.integer "salary", limit: 4, null: false
45
56
  t.date "from_date", null: false
@@ -47,12 +58,12 @@ describe 'Ridgepole::Client#diff -> migrate' do
47
58
  end
48
59
 
49
60
  add_index "salaries", ["emp_no", "id"], name: "emp_no", using: :btree
50
- RUBY
61
+ EOS
51
62
  }
52
63
 
53
64
  let(:expected_dsl) {
54
- <<-RUBY
55
- create_table "salaries"#{unsigned_if_enabled}, force: :cascade do |t|
65
+ erbh(<<-EOS, template_variables)
66
+ create_table "salaries", <%= {force: :cascade}.unshift(@unsigned).i %> do |t|
56
67
  t.integer "emp_no", limit: 4, null: false
57
68
  t.integer "salary", limit: 4, null: false
58
69
  t.date "from_date", null: false
@@ -60,7 +71,7 @@ describe 'Ridgepole::Client#diff -> migrate' do
60
71
  end
61
72
 
62
73
  add_index "salaries", ["emp_no", "id"], name: "emp_no", unique: true, using: :btree
63
- RUBY
74
+ EOS
64
75
  }
65
76
 
66
77
  before { subject.diff(actual_dsl).migrate }
@@ -69,10 +80,9 @@ describe 'Ridgepole::Client#diff -> migrate' do
69
80
  it {
70
81
  delta = subject.diff(expected_dsl)
71
82
  expect(delta.differ?).to be_truthy
72
- expect(subject.dump.delete_empty_lines).to eq actual_dsl.strip_heredoc.strip.delete_empty_lines
83
+ expect(subject.dump).to match_fuzzy actual_dsl
73
84
  delta.migrate
74
- expect(subject.dump.delete_empty_lines).to eq expected_dsl.strip_heredoc.strip.delete_empty_lines
85
+ expect(subject.dump).to match_fuzzy expected_dsl
75
86
  }
76
87
  end
77
88
  end
78
- 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 change index (use t.index)' 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,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
- 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 "departments", primary_key: "dept_no"#{unsigned_if_enabled}, force: :cascade do |t|
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", ["from_date"], name: "emp_no", using: :btree
106
117
 
107
- create_table "employee_clubs"#{unsigned_if_enabled}, force: :cascade do |t|
108
- t.integer "emp_no", limit: 4, null: false#{unsigned_if_enabled}
109
- t.integer "club_id", limit: 4, null: false#{unsigned_if_enabled}
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"#{unsigned_if_enabled}, force: :cascade do |t|
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,17 +147,17 @@ describe 'Ridgepole::Client#diff -> migrate' do
136
147
  end
137
148
 
138
149
  add_index "titles", ["emp_no"], name: "emp_no", using: :btree
139
- RUBY
150
+ EOS
140
151
  }
141
152
 
142
153
  let(:expected_dsl_using_t_index) {
143
- <<-RUBY
144
- create_table "clubs"#{unsigned_if_enabled}, force: :cascade do |t|
154
+ erbh(<<-EOS, template_variables)
155
+ create_table "clubs", <%= {force: :cascade}.unshift(@unsigned).i %> do |t|
145
156
  t.string "name", limit: 255, default: "", null: false
146
157
  t.index "name", name: "idx_name", unique: true, using: :btree
147
158
  end
148
159
 
149
- create_table "departments", primary_key: "dept_no"#{unsigned_if_enabled}, force: :cascade do |t|
160
+ create_table "departments", primary_key: "dept_no", <%= {force: :cascade}.unshift(@unsigned).i %> do |t|
150
161
  t.string "dept_name", limit: 40, null: false
151
162
  t.index ["dept_name"], name: "dept_name", unique: true, using: :btree
152
163
  end
@@ -169,13 +180,13 @@ describe 'Ridgepole::Client#diff -> migrate' do
169
180
  t.index ["from_date"], name: "emp_no", using: :btree
170
181
  end
171
182
 
172
- create_table "employee_clubs"#{unsigned_if_enabled}, force: :cascade do |t|
173
- t.integer "emp_no", limit: 4, null: false#{unsigned_if_enabled}
174
- t.integer "club_id", limit: 4, null: false#{unsigned_if_enabled}
183
+ create_table "employee_clubs", <%= {force: :cascade}.unshift(@unsigned).i %> do |t|
184
+ t.integer "emp_no", <%= {limit: 4, null: false}.push(@unsigned).i %>
185
+ t.integer "club_id", <%= {limit: 4, null: false}.push(@unsigned).i %>
175
186
  t.index ["emp_no", "club_id"], name: "idx_emp_no_club_id", using: :btree
176
187
  end
177
188
 
178
- create_table "employees", primary_key: "emp_no"#{unsigned_if_enabled}, force: :cascade do |t|
189
+ create_table "employees", primary_key: "emp_no", <%= {force: :cascade}.unshift(@unsigned).i %> do |t|
179
190
  t.date "birth_date", null: false
180
191
  t.string "first_name", limit: 14, null: false
181
192
  t.string "last_name", limit: 16, null: false
@@ -198,7 +209,7 @@ describe 'Ridgepole::Client#diff -> migrate' do
198
209
  t.date "to_date"
199
210
  t.index ["emp_no"], name: "emp_no", using: :btree
200
211
  end
201
- RUBY
212
+ EOS
202
213
  }
203
214
 
204
215
  before { subject.diff(actual_dsl).migrate }
@@ -207,10 +218,9 @@ describe 'Ridgepole::Client#diff -> migrate' do
207
218
  it {
208
219
  delta = subject.diff(expected_dsl_using_t_index)
209
220
  expect(delta.differ?).to be_truthy
210
- expect(subject.dump.delete_empty_lines).to eq actual_dsl.strip_heredoc.strip.delete_empty_lines
221
+ expect(subject.dump).to match_fuzzy actual_dsl
211
222
  delta.migrate
212
- expect(subject.dump.delete_empty_lines).to eq expected_dsl.strip_heredoc.strip.delete_empty_lines
223
+ expect(subject.dump).to match_fuzzy expected_dsl
213
224
  }
214
225
  end
215
226
  end
216
- end
@@ -1,8 +1,19 @@
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 change index' do
4
15
  let(:dsl) {
5
- <<-RUBY
16
+ erbh(<<-EOS, template_variables)
6
17
  create_table "clubs", force: :cascade do |t|
7
18
  t.string "name", default: "", null: false
8
19
  end
@@ -36,8 +47,8 @@ describe 'Ridgepole::Client#diff -> migrate' do
36
47
  add_index "dept_manager", ["emp_no"], name: "emp_no", using: :btree
37
48
 
38
49
  create_table "employee_clubs", force: :cascade do |t|
39
- t.integer "emp_no", null: false#{unsigned_if_enabled}
40
- t.integer "club_id", null: false#{unsigned_if_enabled}
50
+ t.integer "emp_no", <%= {null: false}.push(@unsigned).i %>
51
+ t.integer "club_id", <%= {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
@@ -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
- RUBY
81
+ EOS
71
82
  }
72
83
 
73
84
  let(:actual_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 "departments", primary_key: "dept_no"#{unsigned_if_enabled}, force: :cascade do |t|
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"#{unsigned_if_enabled}, force: :cascade do |t|
108
- t.integer "emp_no", limit: 4, null: false#{unsigned_if_enabled}
109
- t.integer "club_id", limit: 4, null: false#{unsigned_if_enabled}
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"#{unsigned_if_enabled}, force: :cascade do |t|
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,18 +147,18 @@ describe 'Ridgepole::Client#diff -> migrate' do
136
147
  end
137
148
 
138
149
  add_index "titles", ["emp_no"], name: "emp_no", using: :btree
139
- RUBY
150
+ EOS
140
151
  }
141
152
 
142
153
  let(:expected_dsl) {
143
- <<-RUBY
144
- create_table "clubs"#{unsigned_if_enabled}, force: :cascade do |t|
154
+ erbh(<<-EOS, template_variables)
155
+ create_table "clubs", <%= {force: :cascade}.unshift(@unsigned).i %> do |t|
145
156
  t.string "name", limit: 255, default: "", null: false
146
157
  end
147
158
 
148
159
  add_index "clubs", ["name"], name: "idx_name", unique: true, using: :btree
149
160
 
150
- create_table "departments", primary_key: "dept_no"#{unsigned_if_enabled}, force: :cascade do |t|
161
+ create_table "departments", primary_key: "dept_no", <%= {force: :cascade}.unshift(@unsigned).i %> do |t|
151
162
  t.string "dept_name", limit: 40, null: false
152
163
  end
153
164
 
@@ -173,14 +184,14 @@ describe 'Ridgepole::Client#diff -> migrate' do
173
184
  add_index "dept_manager", ["dept_no"], name: "dept_no", using: :btree
174
185
  add_index "dept_manager", ["from_date"], name: "emp_no", using: :btree
175
186
 
176
- create_table "employee_clubs"#{unsigned_if_enabled}, force: :cascade do |t|
177
- t.integer "emp_no", limit: 4, null: false#{unsigned_if_enabled}
178
- t.integer "club_id", limit: 4, null: false#{unsigned_if_enabled}
187
+ create_table "employee_clubs", <%= {force: :cascade}.unshift(@unsigned).i %> do |t|
188
+ t.integer "emp_no", <%= {limit: 4, null: false}.push(@unsigned).i %>
189
+ t.integer "club_id", <%= {limit: 4, null: false}.push(@unsigned).i %>
179
190
  end
180
191
 
181
192
  add_index "employee_clubs", ["emp_no", "club_id"], name: "idx_emp_no_club_id", using: :btree
182
193
 
183
- create_table "employees", primary_key: "emp_no"#{unsigned_if_enabled}, force: :cascade do |t|
194
+ create_table "employees", primary_key: "emp_no", <%= {force: :cascade}.unshift(@unsigned).i %> do |t|
184
195
  t.date "birth_date", null: false
185
196
  t.string "first_name", limit: 14, null: false
186
197
  t.string "last_name", limit: 16, null: false
@@ -205,7 +216,7 @@ describe 'Ridgepole::Client#diff -> migrate' do
205
216
  end
206
217
 
207
218
  add_index "titles", ["emp_no"], name: "emp_no", using: :btree
208
- RUBY
219
+ EOS
209
220
  }
210
221
 
211
222
  before { subject.diff(actual_dsl).migrate }
@@ -214,15 +225,15 @@ describe 'Ridgepole::Client#diff -> migrate' do
214
225
  it {
215
226
  delta = subject.diff(expected_dsl)
216
227
  expect(delta.differ?).to be_truthy
217
- expect(subject.dump.delete_empty_lines).to eq actual_dsl.strip_heredoc.strip.delete_empty_lines
228
+ expect(subject.dump).to match_fuzzy actual_dsl
218
229
  delta.migrate
219
- expect(subject.dump.delete_empty_lines).to eq expected_dsl.strip_heredoc.strip.delete_empty_lines
230
+ expect(subject.dump).to match_fuzzy expected_dsl
220
231
  }
221
232
 
222
233
  it {
223
234
  delta = Ridgepole::Client.diff(actual_dsl, expected_dsl, reverse: true)
224
235
  expect(delta.differ?).to be_truthy
225
- expect(delta.script).to eq <<-RUBY.strip_heredoc.strip
236
+ expect(delta.script).to match_fuzzy <<-EOS
226
237
  remove_index("dept_emp", {:name=>"emp_no"})
227
238
  add_index("dept_emp", ["emp_no"], {:name=>"emp_no", :using=>:btree, :unique=>false})
228
239
 
@@ -231,14 +242,14 @@ describe 'Ridgepole::Client#diff -> migrate' do
231
242
 
232
243
  remove_index("salaries", {:name=>"emp_no"})
233
244
  add_index("salaries", ["emp_no"], {:name=>"emp_no", :using=>:btree, :unique=>false})
234
- RUBY
245
+ EOS
235
246
  }
236
247
 
237
248
  it {
238
249
  delta = client(:bulk_change => true).diff(expected_dsl)
239
250
  expect(delta.differ?).to be_truthy
240
- expect(subject.dump.delete_empty_lines).to eq actual_dsl.strip_heredoc.strip.delete_empty_lines
241
- expect(delta.script).to eq <<-RUBY.strip_heredoc.strip
251
+ expect(subject.dump).to match_fuzzy actual_dsl
252
+ expect(delta.script).to match_fuzzy <<-EOS
242
253
  change_table("dept_emp", {:bulk => true}) do |t|
243
254
  t.remove_index({:name=>"emp_no"})
244
255
  t.index(["from_date"], {:name=>"emp_no", :using=>:btree, :unique=>false})
@@ -253,7 +264,7 @@ describe 'Ridgepole::Client#diff -> migrate' do
253
264
  t.remove_index({:name=>"emp_no"})
254
265
  t.index(["from_date"], {:name=>"emp_no", :using=>:btree, :unique=>false})
255
266
  end
256
- RUBY
267
+ EOS
257
268
 
258
269
  # XXX: Can not add an index of the same name
259
270
  expect {
@@ -262,4 +273,3 @@ describe 'Ridgepole::Client#diff -> migrate' do
262
273
  }
263
274
  end
264
275
  end
265
- end
@@ -1,48 +1,61 @@
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 change column' do
4
15
  let(:actual_dsl) {
5
- <<-RUBY
6
- create_table "employees", primary_key: "emp_no"#{unsigned_if_enabled}, force: :cascade do |t|
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", null: false
12
23
  end
13
-
14
- RUBY
24
+ EOS
15
25
  }
16
26
 
17
27
  let(:expected_dsl) {
18
- <<-RUBY
19
- create_table "employees", primary_key: "emp_no2"#{unsigned_if_enabled}, force: :cascade do |t|
28
+ erbh(<<-EOS, template_variables)
29
+ create_table "employees", primary_key: "emp_no2", <%= {force: :cascade}.unshift(@unsigned).i %> do |t|
20
30
  t.date "birth_date", null: false
21
31
  t.string "first_name", limit: 14, null: false
22
32
  t.string "last_name", limit: 16, null: false
23
33
  t.string "gender", limit: 1, null: false
24
34
  t.date "hire_date", null: false
25
35
  end
26
- RUBY
36
+ EOS
27
37
  }
28
38
 
29
39
  before { subject.diff(actual_dsl).migrate }
30
40
  subject { client }
31
41
 
32
42
  it {
33
- expect(Ridgepole::Logger.instance).to receive(:warn).with("[WARNING] No difference of schema configuration for table `employees`. (if you changed some options, please reconfirm your Schemafile)")
43
+ expect(Ridgepole::Logger.instance).to receive(:warn).with("[WARNING] No difference of schema configuration for table `employees` but table options differ.")
44
+ expect(Ridgepole::Logger.instance).to receive(:warn).with(erbh(%Q! from: <%= {primary_key: "emp_no"}.push(@unsigned) %>!, template_variables))
45
+ expect(Ridgepole::Logger.instance).to receive(:warn).with(erbh(%Q! to: <%= {primary_key: "emp_no2"}.push(@unsigned) %>!, template_variables))
34
46
  delta = subject.diff(expected_dsl)
35
47
  expect(delta.differ?).to be_falsey
36
- expect(subject.dump).to eq actual_dsl.strip_heredoc.strip
48
+ expect(subject.dump).to match_fuzzy actual_dsl
37
49
  delta.migrate
38
- expect(subject.dump).to eq actual_dsl.strip_heredoc.strip
50
+ expect(subject.dump).to match_fuzzy actual_dsl
39
51
  }
40
52
 
41
53
  it {
42
- expect(Ridgepole::Logger.instance).to receive(:warn).with("[WARNING] No difference of schema configuration for table `employees`. (if you changed some options, please reconfirm your Schemafile)")
54
+ expect(Ridgepole::Logger.instance).to receive(:warn).with("[WARNING] No difference of schema configuration for table `employees` but table options differ.")
55
+ expect(Ridgepole::Logger.instance).to receive(:warn).with(erbh(%Q! from: <%= {primary_key: "emp_no2"}.push(@unsigned) %>!, template_variables))
56
+ expect(Ridgepole::Logger.instance).to receive(:warn).with(erbh(%Q! to: <%= {primary_key: "emp_no"}.push(@unsigned) %>!, template_variables))
43
57
  delta = Ridgepole::Client.diff(actual_dsl, expected_dsl, reverse: true)
44
58
  expect(delta.differ?).to be_falsey
45
59
  }
46
60
  end
47
61
  end
48
- 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 index (use t.index)' 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) {
@@ -77,13 +88,13 @@ describe 'Ridgepole::Client#diff -> migrate' do
77
88
  }
78
89
 
79
90
  let(:expected_dsl) {
80
- <<-RUBY
81
- create_table "clubs"#{unsigned_if_enabled}, force: :cascade do |t|
91
+ erbh(<<-EOS, template_variables)
92
+ create_table "clubs", <%= {force: :cascade}.unshift(@unsigned).i %> do |t|
82
93
  t.string "name", limit: 255, default: "", null: false
83
94
  t.index ["name"], name: "idx_name", unique: true, using: :btree
84
95
  end
85
96
 
86
- create_table "departments", primary_key: "dept_no"#{unsigned_if_enabled}, force: :cascade do |t|
97
+ create_table "departments", primary_key: "dept_no", <%= {force: :cascade}.unshift(@unsigned).i %> do |t|
87
98
  t.string "dept_name", limit: 40, null: false
88
99
  end
89
100
 
@@ -109,13 +120,13 @@ describe 'Ridgepole::Client#diff -> migrate' do
109
120
  add_index "dept_manager", ["dept_no"], name: "dept_no", using: :btree
110
121
  add_index "dept_manager", ["emp_no"], name: "emp_no", using: :btree
111
122
 
112
- create_table "employee_clubs"#{unsigned_if_enabled}, force: :cascade do |t|
113
- t.integer "emp_no", limit: 4, null: false#{unsigned_if_enabled}
114
- t.integer "club_id", limit: 4, null: false#{unsigned_if_enabled}
123
+ create_table "employee_clubs", <%= {force: :cascade}.unshift(@unsigned).i %> do |t|
124
+ t.integer "emp_no", <%= {limit: 4, null: false}.push(@unsigned).i %>
125
+ t.integer "club_id", <%= {limit: 4, null: false}.push(@unsigned).i %>
115
126
  t.index ["emp_no", "club_id"], name: "idx_emp_no_club_id", using: :btree
116
127
  end
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
@@ -139,7 +150,7 @@ describe 'Ridgepole::Client#diff -> migrate' do
139
150
  t.date "to_date"
140
151
  t.index ["emp_no"], name: "emp_no", using: :btree
141
152
  end
142
- RUBY
153
+ EOS
143
154
  }
144
155
 
145
156
  before { subject.diff(actual_dsl).migrate }
@@ -148,10 +159,9 @@ describe 'Ridgepole::Client#diff -> migrate' do
148
159
  it {
149
160
  delta = subject.diff(expected_dsl)
150
161
  expect(delta.differ?).to be_truthy
151
- expect(subject.dump.delete_empty_lines).to eq actual_dsl.strip_heredoc.strip.delete_empty_lines
162
+ expect(subject.dump).to match_fuzzy actual_dsl
152
163
  delta.migrate
153
- expect(subject.dump.delete_empty_lines).to eq dsl.strip_heredoc.strip.delete_empty_lines
164
+ expect(subject.dump).to match_fuzzy dsl
154
165
  }
155
166
  end
156
167
  end
157
- end