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,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' do
4
15
  let(:dsl) {
5
- <<-RUBY
6
- create_table "clubs"#{unsigned_if_enabled}, force: :cascade do |t|
16
+ erbh(<<-EOS, template_variables)
17
+ create_table "clubs", <%= {force: :cascade}.unshift(@unsigned).i %> do |t|
7
18
  t.string "name", limit: 255, default: "", null: false
8
19
  end
9
20
 
10
21
  add_index "clubs", ["name"], name: "idx_name", unique: true, using: :btree
11
22
 
12
- create_table "departments", primary_key: "dept_no"#{unsigned_if_enabled}, force: :cascade do |t|
23
+ create_table "departments", primary_key: "dept_no", <%= {force: :cascade}.unshift(@unsigned).i %> do |t|
13
24
  t.string "dept_name", limit: 40, null: false
14
25
  end
15
26
 
@@ -35,14 +46,14 @@ describe 'Ridgepole::Client#diff -> migrate' do
35
46
  add_index "dept_manager", ["dept_no"], name: "dept_no", using: :btree
36
47
  add_index "dept_manager", ["emp_no"], name: "emp_no", using: :btree
37
48
 
38
- create_table "employee_clubs"#{unsigned_if_enabled}, force: :cascade do |t|
39
- t.integer "emp_no", limit: 4, null: false#{unsigned_if_enabled}
40
- t.integer "club_id", limit: 4, null: false#{unsigned_if_enabled}
49
+ create_table "employee_clubs", <%= {force: :cascade}.unshift(@unsigned).i %> do |t|
50
+ t.integer "emp_no", <%= {limit: 4, null: false}.push(@unsigned).i %>
51
+ t.integer "club_id", <%= {limit: 4, null: false}.push(@unsigned).i %>
41
52
  end
42
53
 
43
54
  add_index "employee_clubs", ["emp_no", "club_id"], name: "idx_emp_no_club_id", using: :btree
44
55
 
45
- create_table "employees", primary_key: "emp_no"#{unsigned_if_enabled}, force: :cascade do |t|
56
+ create_table "employees", primary_key: "emp_no", <%= {force: :cascade}.unshift(@unsigned).i %> do |t|
46
57
  t.date "birth_date", null: false
47
58
  t.string "first_name", limit: 14, null: false
48
59
  t.string "last_name", limit: 16, null: false
@@ -67,7 +78,7 @@ describe 'Ridgepole::Client#diff -> migrate' do
67
78
  end
68
79
 
69
80
  add_index "titles", ["emp_no"], name: "emp_no", using: :btree
70
- RUBY
81
+ EOS
71
82
  }
72
83
 
73
84
  let(:actual_dsl) {
@@ -84,28 +95,28 @@ describe 'Ridgepole::Client#diff -> migrate' do
84
95
  it {
85
96
  delta = subject.diff(expected_dsl)
86
97
  expect(delta.differ?).to be_truthy
87
- expect(subject.dump.delete_empty_lines).to eq actual_dsl.strip_heredoc.strip.delete_empty_lines
98
+ expect(subject.dump).to match_fuzzy actual_dsl
88
99
  delta.migrate
89
- expect(subject.dump.delete_empty_lines).to eq expected_dsl.strip_heredoc.strip.delete_empty_lines
100
+ expect(subject.dump).to match_fuzzy expected_dsl
90
101
  }
91
102
 
92
103
  it {
93
104
  delta = Ridgepole::Client.diff(actual_dsl, expected_dsl, reverse: true)
94
105
  expect(delta.differ?).to be_truthy
95
- expect(delta.script).to eq <<-RUBY.strip_heredoc.strip
106
+ expect(delta.script).to match_fuzzy <<-EOS
96
107
  remove_index("clubs", {:name=>"idx_name"})
97
108
 
98
109
  remove_index("employee_clubs", {:name=>"idx_emp_no_club_id"})
99
110
 
100
111
  remove_index("titles", {:name=>"emp_no"})
101
- RUBY
112
+ EOS
102
113
  }
103
114
 
104
115
  it {
105
116
  delta = client(:bulk_change => true).diff(expected_dsl)
106
117
  expect(delta.differ?).to be_truthy
107
- expect(subject.dump.delete_empty_lines).to eq actual_dsl.strip_heredoc.strip.delete_empty_lines
108
- expect(delta.script).to eq <<-RUBY.strip_heredoc.strip
118
+ expect(subject.dump).to match_fuzzy actual_dsl
119
+ expect(delta.script).to match_fuzzy <<-EOS
109
120
  change_table("clubs", {:bulk => true}) do |t|
110
121
  t.index(["name"], {:name=>"idx_name", :unique=>true, :using=>:btree})
111
122
  end
@@ -117,10 +128,9 @@ describe 'Ridgepole::Client#diff -> migrate' do
117
128
  change_table("titles", {:bulk => true}) do |t|
118
129
  t.index(["emp_no"], {:name=>"emp_no", :using=>:btree})
119
130
  end
120
- RUBY
131
+ EOS
121
132
  delta.migrate
122
- expect(subject.dump.delete_empty_lines).to eq expected_dsl.strip_heredoc.strip.delete_empty_lines
133
+ expect(subject.dump).to match_fuzzy expected_dsl
123
134
  }
124
135
  end
125
136
  end
126
- end
@@ -1,15 +1,26 @@
1
- unless postgresql?
2
1
  describe 'Ridgepole::Client#diff -> migrate' do
2
+ let(:template_variables) {
3
+ opts = {
4
+ unsigned: {}
5
+ }
6
+
7
+ if condition(:mysql_awesome_enabled)
8
+ opts[:unsigned] = {unsigned: true}
9
+ end
10
+
11
+ opts
12
+ }
13
+
3
14
  context 'when create table' do
4
15
  let(:dsl) {
5
- <<-RUBY
6
- create_table "clubs"#{unsigned_if_enabled}, force: :cascade do |t|
16
+ erbh(<<-EOS, template_variables)
17
+ create_table "clubs", <%= {force: :cascade}.unshift(@unsigned).i %> do |t|
7
18
  t.string "name", limit: 255, default: "", null: false
8
19
  end
9
20
 
10
21
  add_index "clubs", ["name"], name: "idx_name", unique: true, using: :btree
11
22
 
12
- create_table "departments", primary_key: "dept_no"#{unsigned_if_enabled}, force: :cascade do |t|
23
+ create_table "departments", primary_key: "dept_no", <%= {force: :cascade}.unshift(@unsigned).i %> do |t|
13
24
  t.string "dept_name", limit: 40, null: false
14
25
  end
15
26
 
@@ -35,14 +46,14 @@ describe 'Ridgepole::Client#diff -> migrate' do
35
46
  add_index "dept_manager", ["dept_no"], name: "dept_no", using: :btree
36
47
  add_index "dept_manager", ["emp_no"], name: "emp_no", using: :btree
37
48
 
38
- create_table "employee_clubs"#{unsigned_if_enabled}, force: :cascade do |t|
39
- t.integer "emp_no", limit: 4, null: false#{unsigned_if_enabled}
40
- t.integer "club_id", limit: 4, null: false#{unsigned_if_enabled}
49
+ create_table "employee_clubs", <%= {force: :cascade}.unshift(@unsigned).i %> do |t|
50
+ t.integer "emp_no", <%= {limit: 4, null: false}.push(@unsigned).i %>
51
+ t.integer "club_id", <%= {limit: 4, null: false}.push(@unsigned).i %>
41
52
  end
42
53
 
43
54
  add_index "employee_clubs", ["emp_no", "club_id"], name: "idx_emp_no_club_id", using: :btree
44
55
 
45
- create_table "employees", primary_key: "emp_no"#{unsigned_if_enabled}, force: :cascade do |t|
56
+ create_table "employees", primary_key: "emp_no", <%= {force: :cascade}.unshift(@unsigned).i %> do |t|
46
57
  t.date "birth_date", null: false
47
58
  t.string "first_name", limit: 14, null: false
48
59
  t.string "last_name", limit: 16, null: false
@@ -67,7 +78,7 @@ describe 'Ridgepole::Client#diff -> migrate' do
67
78
  end
68
79
 
69
80
  add_index "titles", ["emp_no"], name: "emp_no", using: :btree
70
- RUBY
81
+ EOS
71
82
  }
72
83
 
73
84
  let(:actual_dsl) {
@@ -84,22 +95,21 @@ describe 'Ridgepole::Client#diff -> migrate' do
84
95
  it {
85
96
  delta = subject.diff(expected_dsl)
86
97
  expect(delta.differ?).to be_truthy
87
- expect(subject.dump.delete_empty_lines).to eq actual_dsl.strip_heredoc.strip.delete_empty_lines
98
+ expect(subject.dump).to match_fuzzy actual_dsl
88
99
  delta.migrate
89
- expect(subject.dump.delete_empty_lines).to eq expected_dsl.strip_heredoc.strip.delete_empty_lines
100
+ expect(subject.dump).to match_fuzzy expected_dsl
90
101
  }
91
102
 
92
103
  it {
93
104
  delta = Ridgepole::Client.diff(actual_dsl, expected_dsl, reverse: true)
94
105
  expect(delta.differ?).to be_truthy
95
- expect(delta.script).to eq <<-RUBY.strip_heredoc.strip
106
+ expect(delta.script).to match_fuzzy <<-EOS
96
107
  drop_table("clubs")
97
108
 
98
109
  drop_table("employee_clubs")
99
110
 
100
111
  drop_table("employees")
101
- RUBY
112
+ EOS
102
113
  }
103
114
  end
104
115
  end
105
- end
@@ -1,15 +1,14 @@
1
- unless postgresql?
2
1
  describe 'Ridgepole::Client#diff -> migrate' do
3
2
  context 'when create table' do
4
3
  let(:expected_dsl) {
5
- <<-RUBY
4
+ <<-EOS
6
5
  create_table "employee_clubs", force: :cascade do |t|
7
6
  t.integer "emp_no", null: false, unsigned: true
8
7
  t.integer "club_id", null: false, unsigned: true
9
8
  end
10
9
 
11
10
  add_index "employee_clubs", ["emp_no", "club_id"], name: "idx_emp_no_club_id", using: :btree
12
- RUBY
11
+ EOS
13
12
  }
14
13
 
15
14
  subject { client(table_options: 'ENGINE=MyISAM CHARSET=utf8') }
@@ -18,14 +17,13 @@ describe 'Ridgepole::Client#diff -> migrate' do
18
17
  delta = subject.diff(expected_dsl)
19
18
  expect(delta.differ?).to be_truthy
20
19
 
21
- expect(delta.script).to eq <<-RUBY.strip_heredoc.strip
20
+ expect(delta.script).to match_fuzzy <<-EOS
22
21
  create_table("employee_clubs", {:options=>"ENGINE=MyISAM CHARSET=utf8"}) do |t|
23
22
  t.integer("emp_no", {:null=>false, :unsigned=>true, :limit=>4})
24
23
  t.integer("club_id", {:null=>false, :unsigned=>true, :limit=>4})
25
24
  end
26
25
  add_index("employee_clubs", ["emp_no", "club_id"], {:name=>"idx_emp_no_club_id", :using=>:btree})
27
- RUBY
26
+ EOS
28
27
  }
29
28
  end
30
29
  end
31
- end
@@ -1,15 +1,26 @@
1
- unless postgresql?
2
1
  describe 'Ridgepole::Client#diff -> migrate' do
2
+ let(:template_variables) {
3
+ opts = {
4
+ unsigned: {}
5
+ }
6
+
7
+ if condition(:mysql_awesome_enabled)
8
+ opts[:unsigned] = {unsigned: true}
9
+ end
10
+
11
+ opts
12
+ }
13
+
3
14
  context 'when create table' do
4
15
  let(:dsl) {
5
- <<-RUBY
6
- create_table "clubs"#{unsigned_if_enabled}, force: :cascade do |t|
16
+ erbh(<<-EOS, template_variables)
17
+ create_table "clubs", <%= {force: :cascade}.unshift(@unsigned).i %> do |t|
7
18
  t.string "name", limit: 255, default: "", null: false
8
19
  end
9
20
 
10
21
  add_index "clubs", ["name"], name: "idx_name", unique: true, using: :btree
11
22
 
12
- create_table "departments", primary_key: "dept_no"#{unsigned_if_enabled}, force: :cascade do |t|
23
+ create_table "departments", primary_key: "dept_no", <%= {force: :cascade}.unshift(@unsigned).i %> do |t|
13
24
  t.string "dept_name", limit: 40, null: false
14
25
  end
15
26
 
@@ -35,14 +46,14 @@ describe 'Ridgepole::Client#diff -> migrate' do
35
46
  add_index "dept_manager", ["dept_no"], name: "dept_no", using: :btree
36
47
  add_index "dept_manager", ["emp_no"], name: "emp_no", using: :btree
37
48
 
38
- create_table "employee_clubs"#{unsigned_if_enabled}, force: :cascade do |t|
39
- t.integer "emp_no", limit: 4, null: false#{unsigned_if_enabled}
40
- t.integer "club_id", limit: 4, null: false#{unsigned_if_enabled}
49
+ create_table "employee_clubs", <%= {force: :cascade}.unshift(@unsigned).i %> do |t|
50
+ t.integer "emp_no", <%= {limit: 4, null: false}.push(@unsigned).i %>
51
+ t.integer "club_id", <%= {limit: 4, null: false}.push(@unsigned).i %>
41
52
  end
42
53
 
43
54
  add_index "employee_clubs", ["emp_no", "club_id"], name: "idx_emp_no_club_id", using: :btree
44
55
 
45
- create_table "employees", primary_key: "emp_no"#{unsigned_if_enabled}, force: :cascade do |t|
56
+ create_table "employees", primary_key: "emp_no", <%= {force: :cascade}.unshift(@unsigned).i %> do |t|
46
57
  t.date "birth_date", null: false
47
58
  t.string "first_name", limit: 14, null: false
48
59
  t.string "last_name", limit: 16, null: false
@@ -67,7 +78,7 @@ describe 'Ridgepole::Client#diff -> migrate' do
67
78
  end
68
79
 
69
80
  add_index "titles", ["emp_no"], name: "emp_no", using: :btree
70
- RUBY
81
+ EOS
71
82
  }
72
83
 
73
84
  let(:actual_dsl) {
@@ -84,10 +95,10 @@ describe 'Ridgepole::Client#diff -> migrate' do
84
95
  it {
85
96
  delta = subject.diff(expected_dsl)
86
97
  expect(delta.differ?).to be_truthy
87
- expect(subject.dump.delete_empty_lines).to eq actual_dsl.strip_heredoc.strip.delete_empty_lines
98
+ expect(subject.dump).to match_fuzzy actual_dsl
88
99
 
89
100
  script = <<-EOS
90
- echo "$1" | mysql -uroot #{TEST_SCHEMA}
101
+ echo "$1" | #{MYSQL_CLI} #{TEST_SCHEMA}
91
102
  EOS
92
103
 
93
104
  tempfile(File.basename(__FILE__), script) do |path|
@@ -95,8 +106,7 @@ describe 'Ridgepole::Client#diff -> migrate' do
95
106
  delta.migrate(external_script: path)
96
107
  end
97
108
 
98
- expect(subject.dump.delete_empty_lines).to eq expected_dsl.strip_heredoc.strip.delete_empty_lines
109
+ expect(subject.dump).to match_fuzzy expected_dsl
99
110
  }
100
111
  end
101
112
  end
102
- 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 drop column and index (2)' 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
 
@@ -98,15 +109,15 @@ describe 'Ridgepole::Client#diff -> migrate' do
98
109
 
99
110
  add_index "dept_manager", ["dept_no"], name: "dept_no", using: :btree
100
111
 
101
- create_table "employee_clubs"#{unsigned_if_enabled}, force: :cascade do |t|
102
- t.integer "emp_no", limit: 4, null: false#{unsigned_if_enabled}
103
- t.integer "club_id2", limit: 4, null: false#{unsigned_if_enabled}
112
+ create_table "employee_clubs", <%= {force: :cascade}.unshift(@unsigned).i %> do |t|
113
+ t.integer "emp_no", <%= {limit: 4, null: false}.push(@unsigned).i %>
114
+ t.integer "club_id2", <%= {limit: 4, null: false}.push(@unsigned).i %>
104
115
  end
105
116
 
106
117
  add_index "employee_clubs", ["emp_no", "club_id2"], name: "idx_emp_no_club_id2", using: :btree
107
118
  add_index "employee_clubs", ["emp_no"], name: "idx_emp_no_club_id", using: :btree
108
119
 
109
- create_table "employees", primary_key: "emp_no"#{unsigned_if_enabled}, force: :cascade do |t|
120
+ create_table "employees", primary_key: "emp_no", <%= {force: :cascade}.unshift(@unsigned).i %> do |t|
110
121
  t.date "birth_date", null: false
111
122
  t.string "first_name", limit: 14, null: false
112
123
  end
@@ -128,7 +139,7 @@ describe 'Ridgepole::Client#diff -> migrate' do
128
139
  end
129
140
 
130
141
  add_index "titles", ["emp_no"], name: "emp_no", using: :btree
131
- RUBY
142
+ EOS
132
143
  }
133
144
 
134
145
  before { subject.diff(actual_dsl).migrate }
@@ -137,18 +148,17 @@ describe 'Ridgepole::Client#diff -> migrate' do
137
148
  it {
138
149
  delta = subject.diff(expected_dsl)
139
150
  expect(delta.differ?).to be_truthy
140
- expect(subject.dump).to eq actual_dsl.strip_heredoc.strip
151
+ expect(subject.dump).to match_fuzzy actual_dsl
141
152
  delta.migrate
142
- expect(subject.dump).to eq expected_dsl.strip_heredoc.strip
153
+ expect(subject.dump).to match_fuzzy expected_dsl
143
154
  }
144
155
 
145
156
  it {
146
157
  delta = subject.diff(expected_dsl)
147
158
  expect(delta.differ?).to be_truthy
148
- expect(subject.dump).to eq actual_dsl.strip_heredoc.strip
159
+ expect(subject.dump).to match_fuzzy actual_dsl
149
160
  delta.migrate(:noop => true)
150
- expect(subject.dump).to eq actual_dsl.strip_heredoc.strip
161
+ expect(subject.dump).to match_fuzzy actual_dsl
151
162
  }
152
163
  end
153
164
  end
154
- 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 drop column and 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
 
@@ -96,13 +107,13 @@ describe 'Ridgepole::Client#diff -> migrate' do
96
107
 
97
108
  add_index "dept_manager", ["dept_no"], name: "dept_no", using: :btree
98
109
 
99
- create_table "employee_clubs"#{unsigned_if_enabled}, force: :cascade do |t|
100
- t.integer "emp_no", limit: 4, null: false#{unsigned_if_enabled}
110
+ create_table "employee_clubs", <%= {force: :cascade}.unshift(@unsigned).i %> do |t|
111
+ t.integer "emp_no", <%= {limit: 4, null: false}.push(@unsigned).i %>
101
112
  end
102
113
 
103
114
  add_index "employee_clubs", ["emp_no"], name: "idx_emp_no_club_id", using: :btree
104
115
 
105
- create_table "employees", primary_key: "emp_no"#{unsigned_if_enabled}, force: :cascade do |t|
116
+ create_table "employees", primary_key: "emp_no", <%= {force: :cascade}.unshift(@unsigned).i %> do |t|
106
117
  t.date "birth_date", null: false
107
118
  t.string "first_name", limit: 14, null: false
108
119
  end
@@ -124,7 +135,7 @@ describe 'Ridgepole::Client#diff -> migrate' do
124
135
  end
125
136
 
126
137
  add_index "titles", ["emp_no"], name: "emp_no", using: :btree
127
- RUBY
138
+ EOS
128
139
  }
129
140
 
130
141
  before { subject.diff(actual_dsl).migrate }
@@ -133,24 +144,24 @@ describe 'Ridgepole::Client#diff -> migrate' do
133
144
  it {
134
145
  delta = subject.diff(expected_dsl)
135
146
  expect(delta.differ?).to be_truthy
136
- expect(subject.dump).to eq actual_dsl.strip_heredoc.strip
147
+ expect(subject.dump).to match_fuzzy actual_dsl
137
148
  delta.migrate
138
- expect(subject.dump).to eq expected_dsl.strip_heredoc.strip
149
+ expect(subject.dump).to match_fuzzy expected_dsl
139
150
  }
140
151
 
141
152
  it {
142
153
  delta = subject.diff(expected_dsl)
143
154
  expect(delta.differ?).to be_truthy
144
- expect(subject.dump).to eq actual_dsl.strip_heredoc.strip
155
+ expect(subject.dump).to match_fuzzy actual_dsl
145
156
  delta.migrate(:noop => true)
146
- expect(subject.dump).to eq actual_dsl.strip_heredoc.strip
157
+ expect(subject.dump).to match_fuzzy actual_dsl
147
158
  }
148
159
 
149
160
  it {
150
161
  delta = client(:bulk_change => true).diff(expected_dsl)
151
162
  expect(delta.differ?).to be_truthy
152
- expect(subject.dump).to eq actual_dsl.strip_heredoc.strip
153
- expect(delta.script).to eq <<-RUBY.strip_heredoc.strip
163
+ expect(subject.dump).to match_fuzzy actual_dsl
164
+ expect(delta.script).to match_fuzzy <<-EOS
154
165
  change_table("dept_emp", {:bulk => true}) do |t|
155
166
  t.remove("emp_no")
156
167
  t.remove("from_date")
@@ -172,10 +183,9 @@ change_table("employees", {:bulk => true}) do |t|
172
183
  t.remove("gender")
173
184
  t.remove("hire_date")
174
185
  end
175
- RUBY
186
+ EOS
176
187
  delta.migrate
177
- expect(subject.dump).to eq expected_dsl.strip_heredoc.strip
188
+ expect(subject.dump).to match_fuzzy expected_dsl
178
189
  }
179
190
  end
180
191
  end
181
- end