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