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,24 +1,35 @@
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 fk' do
4
15
  let(:actual_dsl) {
5
- <<-RUBY
6
- create_table "child"#{unsigned_if_enabled}, force: :cascade do |t|
7
- t.integer "parent_id", limit: 4#{unsigned_if_enabled}
16
+ erbh(<<-EOS, template_variables)
17
+ create_table "child", <%= {force: :cascade}.unshift(@unsigned).i %> do |t|
18
+ t.integer "parent_id", <%= {limit: 4}.push(@unsigned).i %>
8
19
  end
9
20
 
10
21
  add_index "child", ["parent_id"], name: "par_id", using: :btree
11
22
 
12
- create_table "parent"#{unsigned_if_enabled}, force: :cascade do |t|
23
+ create_table "parent", <%= {force: :cascade}.unshift(@unsigned).i %> do |t|
13
24
  end
14
- RUBY
25
+ EOS
15
26
  }
16
27
 
17
28
  let(:expected_dsl) {
18
- actual_dsl + (<<-RUBY)
29
+ erbh(actual_dsl + <<-EOS, template_variables)
19
30
 
20
31
  add_foreign_key "child", "parent", name: "child_ibfk_1"
21
- RUBY
32
+ EOS
22
33
  }
23
34
 
24
35
  before { subject.diff(actual_dsl).migrate }
@@ -27,34 +38,34 @@ add_foreign_key "child", "parent", name: "child_ibfk_1"
27
38
  it {
28
39
  delta = subject.diff(expected_dsl)
29
40
  expect(delta.differ?).to be_truthy
30
- expect(subject.dump.delete_empty_lines).to eq actual_dsl.strip_heredoc.strip.delete_empty_lines
41
+ expect(subject.dump).to match_fuzzy actual_dsl
31
42
  delta.migrate
32
- expect(subject.dump.delete_empty_lines).to eq expected_dsl.strip_heredoc.strip.delete_empty_lines
43
+ expect(subject.dump).to match_fuzzy expected_dsl
33
44
  }
34
45
 
35
46
  it {
36
47
  delta = Ridgepole::Client.diff(actual_dsl, expected_dsl, reverse: true, default_int_limit: 4)
37
48
  expect(delta.differ?).to be_truthy
38
- expect(delta.script).to eq <<-RUBY.strip_heredoc.strip
49
+ expect(delta.script).to match_fuzzy <<-EOS
39
50
  remove_foreign_key("child", {:name=>"child_ibfk_1"})
40
- RUBY
51
+ EOS
41
52
  }
42
53
 
43
54
  it {
44
55
  delta = client(bulk_change: true).diff(expected_dsl)
45
56
  expect(delta.differ?).to be_truthy
46
- expect(subject.dump.delete_empty_lines).to eq actual_dsl.strip_heredoc.strip.delete_empty_lines
47
- expect(delta.script).to eq <<-RUBY.strip_heredoc.strip
57
+ expect(subject.dump).to match_fuzzy actual_dsl
58
+ expect(delta.script).to match_fuzzy <<-EOS
48
59
  add_foreign_key("child", "parent", {:name=>"child_ibfk_1"})
49
- RUBY
60
+ EOS
50
61
  delta.migrate
51
- expect(subject.dump.delete_empty_lines).to eq expected_dsl.strip_heredoc.strip.delete_empty_lines
62
+ expect(subject.dump).to match_fuzzy expected_dsl
52
63
  }
53
64
  end
54
65
 
55
66
  context 'when create fk when create table' do
56
67
  let(:dsl) {
57
- <<-RUBY
68
+ <<-EOS
58
69
  create_table "child", force: :cascade do |t|
59
70
  t.integer "parent_id"
60
71
  end
@@ -65,11 +76,11 @@ add_foreign_key "child", "parent", name: "child_ibfk_1"
65
76
 
66
77
  create_table "parent", force: :cascade do |t|
67
78
  end
68
- RUBY
79
+ EOS
69
80
  }
70
81
 
71
82
  let(:sorted_dsl) {
72
- <<-RUBY
83
+ <<-EOS
73
84
  create_table "child", force: :cascade do |t|
74
85
  t.integer "parent_id", limit: 4
75
86
  end
@@ -80,7 +91,7 @@ create_table "parent", force: :cascade do |t|
80
91
  end
81
92
 
82
93
  add_foreign_key "child", "parent", name: "child_ibfk_1"
83
- RUBY
94
+ EOS
84
95
  }
85
96
 
86
97
  subject { client }
@@ -88,15 +99,15 @@ add_foreign_key "child", "parent", name: "child_ibfk_1"
88
99
  it {
89
100
  delta = subject.diff(dsl)
90
101
  expect(delta.differ?).to be_truthy
91
- expect(subject.dump.strip).to eq ''
102
+ expect(subject.dump).to match_fuzzy ''
92
103
  delta.migrate
93
- expect(subject.dump.delete_empty_lines).to eq sorted_dsl.strip_heredoc.strip.delete_empty_lines
104
+ expect(subject.dump).to match_fuzzy sorted_dsl
94
105
  }
95
106
  end
96
107
 
97
108
  context 'already defined' do
98
109
  let(:dsl) {
99
- <<-RUBY
110
+ <<-EOS
100
111
  create_table "child", force: :cascade do |t|
101
112
  t.integer "parent_id", unsigned: true
102
113
  end
@@ -109,7 +120,7 @@ add_foreign_key "child", "parent", name: "child_ibfk_1"
109
120
 
110
121
  create_table "parent", force: :cascade do |t|
111
122
  end
112
- RUBY
123
+ EOS
113
124
  }
114
125
 
115
126
  subject { client }
@@ -123,7 +134,7 @@ end
123
134
 
124
135
  context 'no name' do
125
136
  let(:dsl) {
126
- <<-RUBY
137
+ <<-EOS
127
138
  create_table "child", force: :cascade do |t|
128
139
  t.integer "parent_id", unsigned: true
129
140
  end
@@ -134,7 +145,7 @@ add_foreign_key "child", "parent"
134
145
 
135
146
  create_table "parent", force: :cascade do |t|
136
147
  end
137
- RUBY
148
+ EOS
138
149
  }
139
150
 
140
151
  subject { client }
@@ -148,12 +159,12 @@ end
148
159
 
149
160
  context 'orphan fk' do
150
161
  let(:dsl) {
151
- <<-RUBY
162
+ <<-EOS
152
163
  add_foreign_key "child", "parent", name: "child_ibfk_1"
153
164
 
154
165
  create_table "parent", force: :cascade do |t|
155
166
  end
156
- RUBY
167
+ EOS
157
168
  }
158
169
 
159
170
  subject { client }
@@ -165,4 +176,3 @@ end
165
176
  }
166
177
  end
167
178
  end
168
- end
@@ -1,8 +1,7 @@
1
- unless postgresql?
2
1
  describe 'Ridgepole::Client#diff -> migrate' do
3
2
  context 'when drop fk' do
4
3
  let(:actual_dsl) {
5
- <<-RUBY
4
+ <<-EOS
6
5
  create_table "parent", force: :cascade do |t|
7
6
  end
8
7
 
@@ -13,18 +12,18 @@ end
13
12
  add_index "child", ["parent_id"], name: "par_id", using: :btree
14
13
 
15
14
  add_foreign_key "child", "parent", name: "child_ibfk_1"
16
- RUBY
15
+ EOS
17
16
  }
18
17
 
19
18
  let(:sorted_actual_dsl) {
20
- expected_dsl + (<<-RUBY)
19
+ expected_dsl + (<<-EOS)
21
20
 
22
21
  add_foreign_key "child", "parent", name: "child_ibfk_1"
23
- RUBY
22
+ EOS
24
23
  }
25
24
 
26
25
  let(:expected_dsl) {
27
- <<-RUBY
26
+ <<-EOS
28
27
  create_table "child", force: :cascade do |t|
29
28
  t.integer "parent_id", limit: 4
30
29
  end
@@ -33,7 +32,7 @@ add_index "child", ["parent_id"], name: "par_id", using: :btree
33
32
 
34
33
  create_table "parent", force: :cascade do |t|
35
34
  end
36
- RUBY
35
+ EOS
37
36
  }
38
37
 
39
38
  before { subject.diff(actual_dsl).migrate }
@@ -42,34 +41,34 @@ end
42
41
  it {
43
42
  delta = subject.diff(expected_dsl)
44
43
  expect(delta.differ?).to be_truthy
45
- expect(subject.dump).to eq sorted_actual_dsl.strip_heredoc.strip
44
+ expect(subject.dump).to match_fuzzy sorted_actual_dsl
46
45
  delta.migrate
47
- expect(subject.dump.each_line.select {|i| i !~ /\A\Z/ }.join).to eq expected_dsl.strip_heredoc.strip.each_line.select {|i| i !~ /\A\Z/ }.join
46
+ expect(subject.dump).to match_fuzzy expected_dsl
48
47
  }
49
48
 
50
49
  it {
51
50
  delta = Ridgepole::Client.diff(actual_dsl, expected_dsl, reverse: true, default_int_limit: 4)
52
51
  expect(delta.differ?).to be_truthy
53
- expect(delta.script).to eq <<-RUBY.strip_heredoc.strip
52
+ expect(delta.script).to match_fuzzy <<-EOS
54
53
  add_foreign_key("child", "parent", {:name=>"child_ibfk_1"})
55
- RUBY
54
+ EOS
56
55
  }
57
56
 
58
57
  it {
59
58
  delta = client(bulk_change: true).diff(expected_dsl)
60
59
  expect(delta.differ?).to be_truthy
61
- expect(subject.dump).to eq sorted_actual_dsl.strip_heredoc.strip
62
- expect(delta.script).to eq <<-RUBY.strip_heredoc.strip
60
+ expect(subject.dump).to match_fuzzy sorted_actual_dsl
61
+ expect(delta.script).to match_fuzzy <<-EOS
63
62
  remove_foreign_key("child", {:name=>"child_ibfk_1"})
64
- RUBY
63
+ EOS
65
64
  delta.migrate
66
- expect(subject.dump.each_line.select {|i| i !~ /\A\Z/ }.join).to eq expected_dsl.strip_heredoc.strip.each_line.select {|i| i !~ /\A\Z/ }.join
65
+ expect(subject.dump).to match_fuzzy expected_dsl
67
66
  }
68
67
  end
69
68
 
70
69
  context 'when drop fk when drop table' do
71
70
  let(:dsl) {
72
- <<-RUBY
71
+ <<-EOS
73
72
  create_table "parent", force: :cascade do |t|
74
73
  end
75
74
 
@@ -81,11 +80,11 @@ end
81
80
  add_index "child", ["parent_id"], name: "par_id", using: :btree
82
81
 
83
82
  add_foreign_key "child", "parent", name: "child_ibfk_1"
84
- RUBY
83
+ EOS
85
84
  }
86
85
 
87
86
  let(:sorted_dsl) {
88
- <<-RUBY
87
+ <<-EOS
89
88
  create_table "child", force: :cascade do |t|
90
89
  t.integer "parent_id", limit: 4
91
90
  end
@@ -96,7 +95,7 @@ create_table "parent", force: :cascade do |t|
96
95
  end
97
96
 
98
97
  add_foreign_key "child", "parent", name: "child_ibfk_1"
99
- RUBY
98
+ EOS
100
99
  }
101
100
 
102
101
  before { subject.diff(dsl).migrate }
@@ -105,10 +104,9 @@ add_foreign_key "child", "parent", name: "child_ibfk_1"
105
104
  it {
106
105
  delta = subject.diff('')
107
106
  expect(delta.differ?).to be_truthy
108
- expect(subject.dump).to eq sorted_dsl.strip_heredoc.strip
107
+ expect(subject.dump).to match_fuzzy sorted_dsl
109
108
  delta.migrate
110
- expect(subject.dump.strip).to eq ''
109
+ expect(subject.dump).to match_fuzzy ''
111
110
  }
112
111
  end
113
112
  end
114
- end
@@ -1,9 +1,8 @@
1
- unless postgresql?
2
1
  describe 'Ridgepole::Client#diff -> migrate' do
3
2
  context 'when there is an index of orphans' do
4
3
  let(:actual_dsl) { '' }
5
4
  let(:expected_dsl) {
6
- <<-RUBY
5
+ <<-EOS
7
6
  create_table "clubs", force: :cascade do |t|
8
7
  t.string "name", default: "", null: false
9
8
  end
@@ -68,7 +67,7 @@ describe 'Ridgepole::Client#diff -> migrate' do
68
67
  end
69
68
 
70
69
  add_index "titles", ["emp_no"], name: "emp_no", using: :btree
71
- RUBY
70
+ EOS
72
71
  }
73
72
 
74
73
  subject { client }
@@ -80,4 +79,3 @@ describe 'Ridgepole::Client#diff -> migrate' do
80
79
  }
81
80
  end
82
81
  end
83
- end
@@ -1,19 +1,30 @@
1
- unless postgresql?
2
1
  describe 'Ridgepole::Client#diff -> migrate' do
2
+ let(:template_variables) {
3
+ opts = {
4
+ sql_int_type: 'int(11)',
5
+ }
6
+
7
+ if condition(:mysql_awesome_enabled)
8
+ opts[:sql_int_type] = 'int'
9
+ end
10
+
11
+ opts
12
+ }
13
+
3
14
  context 'when add column (int/noop) (1)' do
4
15
  let(:actual_dsl) {
5
- <<-RUBY
16
+ <<-EOS
6
17
  create_table "dept_emp", id: false, force: :cascade do |t|
7
18
  t.integer "emp_no", limit: 4, null: false
8
19
  t.string "dept_no", limit: 4, null: false
9
20
  t.date "from_date", null: false
10
21
  t.date "to_date", null: false
11
22
  end
12
- RUBY
23
+ EOS
13
24
  }
14
25
 
15
26
  let(:expected_dsl) {
16
- <<-RUBY
27
+ <<-EOS
17
28
  create_table "dept_emp", id: false, force: :cascade do |t|
18
29
  t.integer "emp_no", limit: 4, null: false
19
30
  t.integer "emp_no2", null: false
@@ -21,7 +32,7 @@ describe 'Ridgepole::Client#diff -> migrate' do
21
32
  t.date "from_date", null: false
22
33
  t.date "to_date", null: false
23
34
  end
24
- RUBY
35
+ EOS
25
36
  }
26
37
 
27
38
  before { subject.diff(actual_dsl).migrate }
@@ -30,30 +41,29 @@ describe 'Ridgepole::Client#diff -> migrate' do
30
41
  it {
31
42
  delta = subject.diff(expected_dsl)
32
43
  expect(delta.differ?).to be_truthy
33
- expect(subject.dump).to eq actual_dsl.strip_heredoc.strip
44
+ expect(subject.dump).to match_fuzzy actual_dsl
34
45
  migrated, sql = delta.migrate(:noop => true)
35
46
  expect(migrated).to be_truthy
36
- expect(subject.dump).to eq actual_dsl.strip_heredoc.strip
47
+ expect(subject.dump).to match_fuzzy actual_dsl
37
48
 
38
- sql = sql.each_line.map {|i| i.strip }.join("\n")
39
- expect(sql).to eq("ALTER TABLE `dept_emp` ADD `emp_no2` int#{if_mysql_awesome_enabled('', '(11)')} NOT NULL AFTER `emp_no`")
49
+ expect(sql).to match_fuzzy erbh("ALTER TABLE `dept_emp` ADD `emp_no2` <%= @sql_int_type %> NOT NULL AFTER `emp_no`", template_variables)
40
50
  }
41
51
  end
42
52
 
43
53
  context 'when add column (int/noop) (2)' do
44
54
  let(:actual_dsl) {
45
- <<-RUBY
55
+ <<-EOS
46
56
  create_table "dept_emp", id: false, force: :cascade do |t|
47
57
  t.integer "emp_no", limit: 4, null: false
48
58
  t.string "dept_no", limit: 4, null: false
49
59
  t.date "from_date", null: false
50
60
  t.date "to_date", null: false
51
61
  end
52
- RUBY
62
+ EOS
53
63
  }
54
64
 
55
65
  let(:expected_dsl) {
56
- <<-RUBY
66
+ <<-EOS
57
67
  create_table "dept_emp", id: false, force: :cascade do |t|
58
68
  t.integer "emp_no", limit: 4, null: false
59
69
  t.integer "emp_no2", null: false
@@ -61,7 +71,7 @@ describe 'Ridgepole::Client#diff -> migrate' do
61
71
  t.date "from_date", null: false
62
72
  t.date "to_date", null: false
63
73
  end
64
- RUBY
74
+ EOS
65
75
  }
66
76
 
67
77
  before { subject.diff(actual_dsl).migrate }
@@ -70,30 +80,29 @@ describe 'Ridgepole::Client#diff -> migrate' do
70
80
  it {
71
81
  delta = subject.diff(expected_dsl)
72
82
  expect(delta.differ?).to be_truthy
73
- expect(subject.dump).to eq actual_dsl.strip_heredoc.strip
83
+ expect(subject.dump).to match_fuzzy actual_dsl
74
84
  migrated, sql = delta.migrate(:noop => true)
75
85
  expect(migrated).to be_truthy
76
- expect(subject.dump).to eq actual_dsl.strip_heredoc.strip
86
+ expect(subject.dump).to match_fuzzy actual_dsl
77
87
 
78
- sql = sql.each_line.map {|i| i.strip }.join("\n")
79
- expect(sql).to eq("ALTER TABLE `dept_emp` ADD `emp_no2` int#{if_mysql_awesome_enabled('', '(11)')} NOT NULL AFTER `emp_no`")
88
+ expect(sql).to match_fuzzy erbh("ALTER TABLE `dept_emp` ADD `emp_no2` <%= @sql_int_type %> NOT NULL AFTER `emp_no`", template_variables)
80
89
  }
81
90
  end
82
91
 
83
92
  context 'when add column (int/noop) (3)' do
84
93
  let(:actual_dsl) {
85
- <<-RUBY
94
+ <<-EOS
86
95
  create_table "dept_emp", id: false, force: :cascade do |t|
87
96
  t.integer "emp_no", limit: 4, null: false
88
97
  t.string "dept_no", limit: 4, null: false
89
98
  t.date "from_date", null: false
90
99
  t.date "to_date", null: false
91
100
  end
92
- RUBY
101
+ EOS
93
102
  }
94
103
 
95
104
  let(:expected_dsl) {
96
- <<-RUBY
105
+ <<-EOS
97
106
  create_table "dept_emp", id: false, force: :cascade do |t|
98
107
  t.integer "emp_no", limit: 4, null: false
99
108
  t.integer "emp_no2", limit: 4, null: false
@@ -101,7 +110,7 @@ describe 'Ridgepole::Client#diff -> migrate' do
101
110
  t.date "from_date", null: false
102
111
  t.date "to_date", null: false
103
112
  end
104
- RUBY
113
+ EOS
105
114
  }
106
115
 
107
116
  before { subject.diff(actual_dsl).migrate }
@@ -110,14 +119,12 @@ describe 'Ridgepole::Client#diff -> migrate' do
110
119
  it {
111
120
  delta = subject.diff(expected_dsl)
112
121
  expect(delta.differ?).to be_truthy
113
- expect(subject.dump).to eq actual_dsl.strip_heredoc.strip
122
+ expect(subject.dump).to match_fuzzy actual_dsl
114
123
  migrated, sql = delta.migrate(:noop => true)
115
124
  expect(migrated).to be_truthy
116
- expect(subject.dump).to eq actual_dsl.strip_heredoc.strip
125
+ expect(subject.dump).to match_fuzzy actual_dsl
117
126
 
118
- sql = sql.each_line.map {|i| i.strip }.join("\n")
119
- expect(sql).to eq("ALTER TABLE `dept_emp` ADD `emp_no2` int#{if_mysql_awesome_enabled('', '(11)')} NOT NULL AFTER `emp_no`")
127
+ expect(sql).to match_fuzzy erbh("ALTER TABLE `dept_emp` ADD `emp_no2` <%= @sql_int_type %> NOT NULL AFTER `emp_no`", template_variables)
120
128
  }
121
129
  end
122
130
  end
123
- 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 add column' 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|
49
+ create_table "employee_clubs", <%= {force: :cascade}.unshift(@unsigned).i %> do |t|
39
50
  t.integer "emp_no", limit: 4, null: false
40
51
  t.integer "club_id", limit: 4, null: false
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,7 +115,7 @@ 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|
118
+ create_table "employee_clubs", <%= {force: :cascade}.unshift(@unsigned).i %> do |t|
108
119
  t.integer "emp_no", limit: 4, null: false
109
120
  t.integer "club_id", limit: 4, null: false
110
121
  t.string "any_col", limit: 255, null: false
@@ -112,7 +123,7 @@ describe 'Ridgepole::Client#diff -> migrate' do
112
123
 
113
124
  add_index "employee_clubs", ["emp_no", "club_id"], name: "idx_emp_no_club_id", using: :btree
114
125
 
115
- create_table "employees", primary_key: "emp_no"#{unsigned_if_enabled}, force: :cascade do |t|
126
+ create_table "employees", primary_key: "emp_no", <%= {force: :cascade}.unshift(@unsigned).i %> do |t|
116
127
  t.date "birth_date", null: false
117
128
  t.string "first_name", limit: 14, null: false
118
129
  t.string "last_name", limit: 16, null: false
@@ -139,7 +150,7 @@ describe 'Ridgepole::Client#diff -> migrate' do
139
150
  end
140
151
 
141
152
  add_index "titles", ["emp_no"], name: "emp_no", using: :btree
142
- RUBY
153
+ EOS
143
154
  }
144
155
 
145
156
  before { subject.diff(actual_dsl).migrate }
@@ -148,27 +159,27 @@ 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).to eq actual_dsl.strip_heredoc.strip
162
+ expect(subject.dump).to match_fuzzy actual_dsl
152
163
  delta.migrate
153
- expect(subject.dump).to eq expected_dsl.strip_heredoc.strip
164
+ expect(subject.dump).to match_fuzzy expected_dsl
154
165
  }
155
166
 
156
167
  it {
157
168
  delta = Ridgepole::Client.diff(actual_dsl, expected_dsl, reverse: true)
158
169
  expect(delta.differ?).to be_truthy
159
- expect(delta.script).to eq <<-RUBY.strip_heredoc.strip
170
+ expect(delta.script).to match_fuzzy <<-EOS
160
171
  remove_column("employee_clubs", "any_col")
161
172
 
162
173
  remove_column("employees", "age")
163
174
  remove_column("employees", "updated_at")
164
- RUBY
175
+ EOS
165
176
  }
166
177
 
167
178
  it {
168
179
  delta = client(:bulk_change => true).diff(expected_dsl)
169
180
  expect(delta.differ?).to be_truthy
170
- expect(subject.dump).to eq actual_dsl.strip_heredoc.strip
171
- expect(delta.script).to eq <<-RUBY.strip_heredoc.strip
181
+ expect(subject.dump).to match_fuzzy actual_dsl
182
+ expect(delta.script).to match_fuzzy <<-EOS
172
183
  change_table("employee_clubs", {:bulk => true}) do |t|
173
184
  t.column("any_col", :string, {:limit=>255, :null=>false, :after=>"club_id"})
174
185
  end
@@ -177,10 +188,9 @@ describe 'Ridgepole::Client#diff -> migrate' do
177
188
  t.column("age", :integer, {:limit=>4, :null=>false, :after=>"hire_date"})
178
189
  t.column("updated_at", :date, {:after=>"age"})
179
190
  end
180
- RUBY
191
+ EOS
181
192
  delta.migrate
182
- expect(subject.dump).to eq expected_dsl.strip_heredoc.strip
193
+ expect(subject.dump).to match_fuzzy expected_dsl
183
194
  }
184
195
  end
185
196
  end
186
- end