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,148 +1,144 @@
1
- unless postgresql?
2
- if mysql_awesome_enabled?
3
- describe 'Ridgepole::Client#diff -> migrate' do
4
- context 'when change column (add collation)' do
5
- let(:actual_dsl) {
6
- <<-RUBY
7
- create_table "employee_clubs", unsigned: true, force: :cascade do |t|
8
- t.integer "emp_no", limit: 4, null: false
9
- t.integer "club_id", limit: 4, null: false, unsigned: true
10
- t.string "string", limit: 255, null: false
11
- t.text "text", limit: 65535, null: false
12
- end
13
- RUBY
14
- }
15
-
16
- let(:expected_dsl) {
17
- <<-RUBY
18
- create_table "employee_clubs", unsigned: true, force: :cascade do |t|
19
- t.integer "emp_no", limit: 4, null: false
20
- t.integer "club_id", limit: 4, null: false, unsigned: true
21
- t.string "string", limit: 255, null: false, collation: "ascii_bin"
22
- t.text "text", limit: 65535, null: false, collation: "utf8mb4_bin"
23
- end
24
- RUBY
25
- }
26
-
27
- before { subject.diff(actual_dsl).migrate }
28
- subject { client }
29
-
30
- it {
31
- delta = subject.diff(expected_dsl)
32
- expect(delta.differ?).to be_truthy
33
- expect(subject.dump).to eq actual_dsl.strip_heredoc.strip
34
- delta.migrate
35
- expect(subject.dump).to eq expected_dsl.strip_heredoc.strip
36
- }
37
- end
38
-
39
- context 'when change column (delete collation)' do
40
- let(:actual_dsl) {
41
- <<-RUBY
42
- create_table "employee_clubs", unsigned: true, force: :cascade do |t|
43
- t.integer "emp_no", limit: 4, null: false
44
- t.integer "club_id", limit: 4, null: false, unsigned: true
45
- t.string "string", limit: 255, null: false, collation: "ascii_bin"
46
- t.text "text", limit: 65535, null: false, collation: "utf8mb4_bin"
47
- end
48
- RUBY
49
- }
50
-
51
- let(:expected_dsl) {
52
- <<-RUBY
53
- create_table "employee_clubs", unsigned: true, force: :cascade do |t|
54
- t.integer "emp_no", limit: 4, null: false
55
- t.integer "club_id", limit: 4, null: false, unsigned: true
56
- t.string "string", limit: 255, null: false
57
- t.text "text", limit: 65535, null: false
58
- end
59
- RUBY
60
- }
61
-
62
- before { subject.diff(actual_dsl).migrate }
63
- subject { client }
64
-
65
- it {
66
- delta = subject.diff(expected_dsl)
67
- expect(delta.differ?).to be_truthy
68
- expect(subject.dump).to eq actual_dsl.strip_heredoc.strip
69
- delta.migrate
70
- expect(subject.dump).to eq expected_dsl.strip_heredoc.strip
71
- }
72
- end
73
-
74
- context 'when change column (change collation)' do
75
- let(:actual_dsl) {
76
- <<-RUBY
77
- create_table "employee_clubs", unsigned: true, force: :cascade do |t|
78
- t.integer "emp_no", limit: 4, null: false
79
- t.integer "club_id", limit: 4, null: false, unsigned: true
80
- t.string "string", limit: 255, null: false, collation: "ascii_bin"
81
- t.text "text", limit: 65535, null: false, collation: "utf8mb4_bin"
82
- end
83
- RUBY
84
- }
1
+ describe 'Ridgepole::Client#diff -> migrate', condition: [:mysql_awesome_enabled] do
2
+ context 'when change column (add collation)' do
3
+ let(:actual_dsl) {
4
+ <<-RUBY
5
+ create_table "employee_clubs", unsigned: true, force: :cascade do |t|
6
+ t.integer "emp_no", limit: 4, null: false
7
+ t.integer "club_id", limit: 4, null: false, unsigned: true
8
+ t.string "string", limit: 255, null: false
9
+ t.text "text", limit: 65535, null: false
10
+ end
11
+ RUBY
12
+ }
13
+
14
+ let(:expected_dsl) {
15
+ <<-RUBY
16
+ create_table "employee_clubs", unsigned: true, force: :cascade do |t|
17
+ t.integer "emp_no", limit: 4, null: false
18
+ t.integer "club_id", limit: 4, null: false, unsigned: true
19
+ t.string "string", limit: 255, null: false, collation: "ascii_bin"
20
+ t.text "text", limit: 65535, null: false, collation: "utf8mb4_bin"
21
+ end
22
+ RUBY
23
+ }
24
+
25
+ before { subject.diff(actual_dsl).migrate }
26
+ subject { client }
27
+
28
+ it {
29
+ delta = subject.diff(expected_dsl)
30
+ expect(delta.differ?).to be_truthy
31
+ expect(subject.dump).to match_fuzzy actual_dsl
32
+ delta.migrate
33
+ expect(subject.dump).to match_fuzzy expected_dsl
34
+ }
35
+ end
85
36
 
86
- let(:expected_dsl) {
87
- <<-RUBY
88
- create_table "employee_clubs", unsigned: true, force: :cascade do |t|
89
- t.integer "emp_no", limit: 4, null: false
90
- t.integer "club_id", limit: 4, null: false, unsigned: true
91
- t.string "string", limit: 255, null: false, collation: "utf8mb4_bin"
92
- t.text "text", limit: 65535, null: false, collation: "ascii_bin"
93
- end
94
- RUBY
95
- }
37
+ context 'when change column (delete collation)' do
38
+ let(:actual_dsl) {
39
+ <<-RUBY
40
+ create_table "employee_clubs", unsigned: true, force: :cascade do |t|
41
+ t.integer "emp_no", limit: 4, null: false
42
+ t.integer "club_id", limit: 4, null: false, unsigned: true
43
+ t.string "string", limit: 255, null: false, collation: "ascii_bin"
44
+ t.text "text", limit: 65535, null: false, collation: "utf8mb4_bin"
45
+ end
46
+ RUBY
47
+ }
48
+
49
+ let(:expected_dsl) {
50
+ <<-RUBY
51
+ create_table "employee_clubs", unsigned: true, force: :cascade do |t|
52
+ t.integer "emp_no", limit: 4, null: false
53
+ t.integer "club_id", limit: 4, null: false, unsigned: true
54
+ t.string "string", limit: 255, null: false
55
+ t.text "text", limit: 65535, null: false
56
+ end
57
+ RUBY
58
+ }
59
+
60
+ before { subject.diff(actual_dsl).migrate }
61
+ subject { client }
62
+
63
+ it {
64
+ delta = subject.diff(expected_dsl)
65
+ expect(delta.differ?).to be_truthy
66
+ expect(subject.dump).to match_fuzzy actual_dsl
67
+ delta.migrate
68
+ expect(subject.dump).to match_fuzzy expected_dsl
69
+ }
70
+ end
96
71
 
97
- before { subject.diff(actual_dsl).migrate }
98
- subject { client }
72
+ context 'when change column (change collation)' do
73
+ let(:actual_dsl) {
74
+ <<-RUBY
75
+ create_table "employee_clubs", unsigned: true, force: :cascade do |t|
76
+ t.integer "emp_no", limit: 4, null: false
77
+ t.integer "club_id", limit: 4, null: false, unsigned: true
78
+ t.string "string", limit: 255, null: false, collation: "ascii_bin"
79
+ t.text "text", limit: 65535, null: false, collation: "utf8mb4_bin"
80
+ end
81
+ RUBY
82
+ }
83
+
84
+ let(:expected_dsl) {
85
+ <<-RUBY
86
+ create_table "employee_clubs", unsigned: true, force: :cascade do |t|
87
+ t.integer "emp_no", limit: 4, null: false
88
+ t.integer "club_id", limit: 4, null: false, unsigned: true
89
+ t.string "string", limit: 255, null: false, collation: "utf8mb4_bin"
90
+ t.text "text", limit: 65535, null: false, collation: "ascii_bin"
91
+ end
92
+ RUBY
93
+ }
94
+
95
+ before { subject.diff(actual_dsl).migrate }
96
+ subject { client }
97
+
98
+ it {
99
+ delta = subject.diff(expected_dsl)
100
+ expect(delta.differ?).to be_truthy
101
+ expect(subject.dump).to match_fuzzy actual_dsl
102
+ delta.migrate
103
+ expect(subject.dump).to match_fuzzy expected_dsl
104
+ }
105
+ end
99
106
 
107
+ context 'when change column (no change collation)' do
108
+ let(:actual_dsl) {
109
+ <<-RUBY
110
+ create_table "employee_clubs", unsigned: true, force: :cascade do |t|
111
+ t.integer "emp_no", limit: 4, null: false
112
+ t.integer "club_id", limit: 4, null: false, unsigned: true
113
+ t.string "string", limit: 255, null: false, collation: "ascii_bin"
114
+ t.text "text", limit: 65535, null: false, collation: "utf8mb4_bin"
115
+ end
116
+ RUBY
117
+ }
118
+
119
+ before { subject.diff(actual_dsl).migrate }
120
+ subject { client }
121
+
122
+ it {
123
+ delta = subject.diff(actual_dsl)
124
+ expect(delta.differ?).to be_falsey
125
+ expect(subject.dump).to match_fuzzy actual_dsl
126
+ delta.migrate
127
+ expect(subject.dump).to match_fuzzy actual_dsl
128
+ }
129
+
130
+ describe '#diff' do
100
131
  it {
101
- delta = subject.diff(expected_dsl)
102
- expect(delta.differ?).to be_truthy
103
- expect(subject.dump).to eq actual_dsl.strip_heredoc.strip
104
- delta.migrate
105
- expect(subject.dump).to eq expected_dsl.strip_heredoc.strip
106
- }
107
- end
108
-
109
- context 'when change column (no change collation)' do
110
- let(:actual_dsl) {
111
- <<-RUBY
112
- create_table "employee_clubs", unsigned: true, force: :cascade do |t|
113
- t.integer "emp_no", limit: 4, null: false
114
- t.integer "club_id", limit: 4, null: false, unsigned: true
115
- t.string "string", limit: 255, null: false, collation: "ascii_bin"
116
- t.text "text", limit: 65535, null: false, collation: "utf8mb4_bin"
117
- end
118
- RUBY
119
- }
132
+ Tempfile.open("#{File.basename __FILE__}.#{$$}") do |f|
133
+ f.puts(actual_dsl)
134
+ f.flush
120
135
 
121
- before { subject.diff(actual_dsl).migrate }
122
- subject { client }
136
+ out, status = run_ridgepole('--diff', "'#{JSON.dump(conn_spec)}'", f.path, '--enable-mysql-awesome', '--dump-without-table-options')
123
137
 
124
- it {
125
- delta = subject.diff(actual_dsl)
126
- expect(delta.differ?).to be_falsey
127
- expect(subject.dump).to eq actual_dsl.strip_heredoc.strip
128
- delta.migrate
129
- expect(subject.dump).to eq actual_dsl.strip_heredoc.strip
138
+ expect(out).to be_empty
139
+ expect(status.success?).to be_truthy
140
+ end
130
141
  }
131
-
132
- describe '#diff' do
133
- it {
134
- Tempfile.open("#{File.basename __FILE__}.#{$$}") do |f|
135
- f.puts(actual_dsl)
136
- f.flush
137
-
138
- out, status = run_ridgepole('--diff', "'#{JSON.dump(conn_spec)}'", f.path, '--enable-mysql-awesome', '--dump-without-table-options')
139
-
140
- expect(out).to be_empty
141
- expect(status.success?).to be_truthy
142
- end
143
- }
144
- end
145
142
  end
146
143
  end
147
144
  end
148
- end
@@ -1,4 +1,3 @@
1
- unless postgresql?
2
1
  describe 'Ridgepole::Client.diff' do
3
2
  context 'when change column' do
4
3
  let(:tmpdir) { Dir.mktmpdir }
@@ -170,7 +169,7 @@ describe 'Ridgepole::Client.diff' do
170
169
  it {
171
170
  delta = subject.diff(actual_dsl, expected_dsl, enable_mysql_unsigned: true)
172
171
  expect(delta.differ?).to be_truthy
173
- expect(delta.script).to eq <<-RUBY.strip_heredoc.strip
172
+ expect(delta.script).to match_fuzzy <<-RUBY
174
173
  change_column("employee_clubs", "club_id", :integer, {:unsigned=>false, :null=>true, :default=>nil})
175
174
 
176
175
  change_column("employees", "last_name", :string, {:limit=>20, :default=>"XXX"})
@@ -183,4 +182,3 @@ describe 'Ridgepole::Client.diff' do
183
182
  end
184
183
  end
185
184
  end
186
- end
@@ -1,4 +1,3 @@
1
- unless postgresql?
2
1
  describe 'Ridgepole::Client.diff' do
3
2
  context 'when change column' do
4
3
  let(:actual_dsl) {
@@ -144,7 +143,7 @@ describe 'Ridgepole::Client.diff' do
144
143
  it {
145
144
  delta = subject.diff(actual_dsl, expected_dsl, enable_mysql_unsigned: true)
146
145
  expect(delta.differ?).to be_truthy
147
- expect(delta.script).to eq <<-RUBY.strip_heredoc.strip
146
+ expect(delta.script).to match_fuzzy <<-RUBY
148
147
  change_column("employee_clubs", "club_id", :integer, {:unsigned=>false, :null=>true, :default=>nil})
149
148
 
150
149
  change_column("employees", "last_name", :string, {:limit=>20, :default=>"XXX"})
@@ -153,4 +152,3 @@ describe 'Ridgepole::Client.diff' do
153
152
  }
154
153
  end
155
154
  end
156
- end
@@ -1,4 +1,3 @@
1
- unless postgresql?
2
1
  describe 'Ridgepole::Client.dump' do
3
2
  context 'when there is a tables' do
4
3
  before { restore_tables }
@@ -7,7 +6,7 @@ describe 'Ridgepole::Client.dump' do
7
6
  let(:options) {
8
7
  opts = {}
9
8
 
10
- if mysql_awesome_enabled?
9
+ if condition(:mysql_awesome_enabled)
11
10
  opts[:enable_mysql_awesome] = true
12
11
  opts[:dump_without_table_options] = true
13
12
  else
@@ -17,15 +16,35 @@ describe 'Ridgepole::Client.dump' do
17
16
  opts
18
17
  }
19
18
 
19
+ let(:template_variables) {
20
+ opts = {
21
+ clubs: {force: :cascade},
22
+ departments: {force: :cascade},
23
+ employee_clubs: {force: :cascade},
24
+ employees: {force: :cascade},
25
+ unsigned: {},
26
+ }
27
+
28
+ if condition(:mysql_awesome_enabled)
29
+ opts[:clubs].unshift(unsigned: true)
30
+ opts[:departments].unshift(id: :string, limit: 4)
31
+ opts[:employee_clubs].unshift(unsigned: true)
32
+ opts[:employees].unshift(id: :integer, limit: 4)
33
+ opts[:unsigned] = {unsigned: true}
34
+ end
35
+
36
+ opts
37
+ }
38
+
20
39
  it {
21
- expect(subject.dump(conn_spec, options)).to eq <<-RUBY.strip_heredoc.strip
22
- create_table "clubs",#{if_mysql_awesome_enabled(' unsigned: true,')} force: :cascade do |t|
40
+ expect(subject.dump(conn_spec, options)).to match_fuzzy erbh(<<-EOS, template_variables)
41
+ create_table "clubs", <%= @clubs.i %> do |t|
23
42
  t.string "name", limit: 255, default: "", null: false
24
43
  end
25
44
 
26
45
  add_index "clubs", ["name"], name: "idx_name", unique: true, using: :btree
27
46
 
28
- create_table "departments", primary_key: "dept_no",#{mysql_awesome_enabled? ? ' id: :string, limit: 4,' : ''} force: :cascade do |t|
47
+ create_table "departments", primary_key: "dept_no", <%= @departments.i %> do |t|
29
48
  t.string "dept_name", limit: 40, null: false
30
49
  end
31
50
 
@@ -51,14 +70,14 @@ describe 'Ridgepole::Client.dump' do
51
70
  add_index "dept_manager", ["dept_no"], name: "dept_no", using: :btree
52
71
  add_index "dept_manager", ["emp_no"], name: "emp_no", using: :btree
53
72
 
54
- create_table "employee_clubs",#{if_mysql_awesome_enabled(' unsigned: true,')} force: :cascade do |t|
55
- t.integer "emp_no", limit: 4, null: false#{unsigned_if_enabled}
56
- t.integer "club_id", limit: 4, null: false#{unsigned_if_enabled}
73
+ create_table "employee_clubs", <%= @employee_clubs.i %> do |t|
74
+ t.integer "emp_no", <%= {limit: 4, null: false}.push(@unsigned).i %>
75
+ t.integer "club_id", <%= {limit: 4, null: false}.push(@unsigned).i %>
57
76
  end
58
77
 
59
78
  add_index "employee_clubs", ["emp_no", "club_id"], name: "idx_emp_no_club_id", using: :btree
60
79
 
61
- create_table "employees", primary_key: "emp_no",#{if_mysql_awesome_enabled(' id: :integer, limit: 4,')} force: :cascade do |t|
80
+ create_table "employees", primary_key: "emp_no", <%= @employees.i %> do |t|
62
81
  t.date "birth_date", null: false
63
82
  t.string "first_name", limit: 14, null: false
64
83
  t.string "last_name", limit: 16, null: false
@@ -83,8 +102,7 @@ describe 'Ridgepole::Client.dump' do
83
102
  end
84
103
 
85
104
  add_index "titles", ["emp_no"], name: "emp_no", using: :btree
86
- RUBY
105
+ EOS
87
106
  }
88
107
  end
89
108
  end
90
- end
@@ -1,12 +1,23 @@
1
- unless postgresql?
2
1
  describe 'Ridgepole::Client#dump' do
2
+ let(:template_variables) {
3
+ opts = {
4
+ employees: {force: :cascade},
5
+ }
6
+
7
+ if condition(:mysql_awesome_enabled)
8
+ opts[:employees].unshift(id: :integer, limit: 4)
9
+ end
10
+
11
+ opts
12
+ }
13
+
3
14
  context 'when there is a tables (dump some tables)' do
4
15
  before { restore_tables }
5
16
  subject { client(tables: ['employees', 'salaries']) }
6
17
 
7
18
  it {
8
- expect(subject.dump).to eq <<-RUBY.strip_heredoc.strip
9
- create_table "employees", primary_key: "emp_no",#{if_mysql_awesome_enabled(' id: :integer, limit: 4,')} force: :cascade do |t|
19
+ expect(subject.dump).to match_fuzzy erbh(<<-EOS, template_variables)
20
+ create_table "employees", primary_key: "emp_no", <%= @employees.i %> do |t|
10
21
  t.date "birth_date", null: false
11
22
  t.string "first_name", limit: 14, null: false
12
23
  t.string "last_name", limit: 16, null: false
@@ -22,7 +33,7 @@ describe 'Ridgepole::Client#dump' do
22
33
  end
23
34
 
24
35
  add_index "salaries", ["emp_no"], name: "emp_no", using: :btree
25
- RUBY
36
+ EOS
26
37
  }
27
38
  end
28
39
 
@@ -40,8 +51,8 @@ describe 'Ridgepole::Client#dump' do
40
51
  }
41
52
 
42
53
  it {
43
- expect(subject.dump).to eq <<-RUBY.strip_heredoc.strip
44
- create_table "employees", primary_key: "emp_no",#{if_mysql_awesome_enabled(' id: :integer, limit: 4,')} force: :cascade do |t|
54
+ expect(subject.dump).to match_fuzzy erbh(<<-EOS, template_variables)
55
+ create_table "employees", primary_key: "emp_no", <%= @employees.i %> do |t|
45
56
  t.date "birth_date", null: false
46
57
  t.string "first_name", limit: 14, null: false
47
58
  t.string "last_name", limit: 16, null: false
@@ -57,8 +68,7 @@ describe 'Ridgepole::Client#dump' do
57
68
  end
58
69
 
59
70
  add_index "salaries", ["emp_no"], name: "emp_no", using: :btree
60
- RUBY
71
+ EOS
61
72
  }
62
73
  end
63
74
  end
64
- end
@@ -1,18 +1,37 @@
1
- unless postgresql?
2
1
  describe 'Ridgepole::Client#dump' do
3
2
  context 'when there is a tables' do
4
3
  before { restore_tables }
5
4
  subject { client }
6
5
 
6
+ let(:template_variables) {
7
+ opts = {
8
+ clubs: {force: :cascade},
9
+ departments: {force: :cascade},
10
+ employee_clubs: {force: :cascade},
11
+ employees: {force: :cascade},
12
+ unsigned: {}
13
+ }
14
+
15
+ if condition(:mysql_awesome_enabled)
16
+ opts[:clubs].unshift(unsigned: true)
17
+ opts[:departments].unshift(id: :string, limit: 4)
18
+ opts[:employee_clubs].unshift(unsigned: true)
19
+ opts[:employees].unshift(id: :integer, limit: 4)
20
+ opts[:unsigned] = {unsigned: true}
21
+ end
22
+
23
+ opts
24
+ }
25
+
7
26
  it {
8
- expect(subject.dump).to eq <<-RUBY.strip_heredoc.strip
9
- create_table "clubs",#{if_mysql_awesome_enabled(' unsigned: true,')} force: :cascade do |t|
27
+ expect(subject.dump).to match_fuzzy erbh(<<-EOS, template_variables)
28
+ create_table "clubs", <%= @clubs.i %> do |t|
10
29
  t.string "name", limit: 255, default: "", null: false
11
30
  end
12
31
 
13
32
  add_index "clubs", ["name"], name: "idx_name", unique: true, using: :btree
14
33
 
15
- create_table "departments", primary_key: "dept_no",#{mysql_awesome_enabled? ? ' id: :string, limit: 4,' : ''} force: :cascade do |t|
34
+ create_table "departments", primary_key: "dept_no", <%= @departments.i %> do |t|
16
35
  t.string "dept_name", limit: 40, null: false
17
36
  end
18
37
 
@@ -38,14 +57,14 @@ describe 'Ridgepole::Client#dump' do
38
57
  add_index "dept_manager", ["dept_no"], name: "dept_no", using: :btree
39
58
  add_index "dept_manager", ["emp_no"], name: "emp_no", using: :btree
40
59
 
41
- create_table "employee_clubs",#{if_mysql_awesome_enabled(' unsigned: true,')} force: :cascade do |t|
42
- t.integer "emp_no", limit: 4, null: false#{unsigned_if_enabled}
43
- t.integer "club_id", limit: 4, null: false#{unsigned_if_enabled}
60
+ create_table "employee_clubs", <%= @employee_clubs.i %> do |t|
61
+ t.integer "emp_no", <%= {limit: 4, null: false}.push(@unsigned).i %>
62
+ t.integer "club_id", <%= {limit: 4, null: false}.push(@unsigned).i %>
44
63
  end
45
64
 
46
65
  add_index "employee_clubs", ["emp_no", "club_id"], name: "idx_emp_no_club_id", using: :btree
47
66
 
48
- create_table "employees", primary_key: "emp_no",#{if_mysql_awesome_enabled(' id: :integer, limit: 4,')} force: :cascade do |t|
67
+ create_table "employees", primary_key: "emp_no", <%= @employees.i %> do |t|
49
68
  t.date "birth_date", null: false
50
69
  t.string "first_name", limit: 14, null: false
51
70
  t.string "last_name", limit: 16, null: false
@@ -70,8 +89,7 @@ describe 'Ridgepole::Client#dump' do
70
89
  end
71
90
 
72
91
  add_index "titles", ["emp_no"], name: "emp_no", using: :btree
73
- RUBY
92
+ EOS
74
93
  }
75
94
  end
76
95
  end
77
- end
@@ -1,45 +1,41 @@
1
- unless postgresql?
2
- if mysql_awesome_enabled?
3
- describe 'Ridgepole::Client#dump' do
4
- let(:actual_dsl) {
5
- <<-'RUBY'
6
- create_table "books", unsigned: true, force: :cascade, options: "ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='\"london\" bridge \"is\" falling \"down\"'" do |t|
1
+ describe 'Ridgepole::Client#dump', condition: [:mysql_awesome_enabled] do
2
+ let(:actual_dsl) {
3
+ <<-'EOS'
4
+ create_table "books", unsigned: true, force: :cascade, options: "ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='\"london\" bridge \"is\" falling \"down\"'" do |t|
5
+ t.string "title", limit: 255, null: false
6
+ t.integer "author_id", limit: 4, null: false
7
+ t.datetime "created_at"
8
+ t.datetime "updated_at"
9
+ end
10
+ EOS
11
+ }
12
+
13
+ context 'when without table options' do
14
+ let(:expected_dsl) {
15
+ <<-EOS
16
+ create_table "books", unsigned: true, force: :cascade do |t|
7
17
  t.string "title", limit: 255, null: false
8
18
  t.integer "author_id", limit: 4, null: false
9
19
  t.datetime "created_at"
10
20
  t.datetime "updated_at"
11
21
  end
12
- RUBY
22
+ EOS
13
23
  }
14
24
 
15
- context 'when without table options' do
16
- let(:expected_dsl) {
17
- <<-RUBY
18
- create_table "books", unsigned: true, force: :cascade do |t|
19
- t.string "title", limit: 255, null: false
20
- t.integer "author_id", limit: 4, null: false
21
- t.datetime "created_at"
22
- t.datetime "updated_at"
23
- end
24
- RUBY
25
- }
26
-
27
- before { subject.diff(actual_dsl).migrate }
28
- subject { client }
25
+ before { subject.diff(actual_dsl).migrate }
26
+ subject { client }
29
27
 
30
- it {
31
- expect(subject.dump).to eq expected_dsl.strip_heredoc.strip
32
- }
33
- end
28
+ it {
29
+ expect(subject.dump).to match_fuzzy expected_dsl
30
+ }
31
+ end
34
32
 
35
- context 'when with table options' do
36
- before { subject.diff(actual_dsl).migrate }
37
- subject { client(dump_without_table_options: false) }
33
+ context 'when with table options' do
34
+ before { subject.diff(actual_dsl).migrate }
35
+ subject { client(dump_without_table_options: false) }
38
36
 
39
- it {
40
- expect(subject.dump).to eq actual_dsl.strip_heredoc.strip
41
- }
42
- end
37
+ it {
38
+ expect(subject.dump).to match_fuzzy actual_dsl
39
+ }
43
40
  end
44
41
  end
45
- end
@@ -1,4 +1,3 @@
1
- unless postgresql?
2
1
  describe 'Ridgepole::Client#diff -> migrate' do
3
2
  context 'when change fk' do
4
3
  let(:actual_dsl) {
@@ -53,10 +52,9 @@ add_foreign_key "child", "parent", name: "child_ibfk_1"
53
52
  it {
54
53
  delta = subject.diff(expected_dsl)
55
54
  expect(delta.differ?).to be_truthy
56
- expect(subject.dump.delete_empty_lines).to eq sorted_actual_dsl.strip_heredoc.strip.delete_empty_lines
55
+ expect(subject.dump).to match_fuzzy sorted_actual_dsl
57
56
  delta.migrate
58
- expect(subject.dump.delete_empty_lines).to eq expected_dsl.strip_heredoc.strip.delete_empty_lines
57
+ expect(subject.dump).to match_fuzzy expected_dsl
59
58
  }
60
59
  end
61
60
  end
62
- end