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.
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