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,9 +1,26 @@
1
- unless postgresql?
2
1
  describe 'Ridgepole::Client#diff -> migrate' do
2
+ let(:template_variables) {
3
+ opts = {
4
+ unsigned: {},
5
+ sql_int_pk_type: 'int(11) auto_increment PRIMARY KEY',
6
+ sql_int_type: 'int(11)',
7
+ sql_uint_type: 'int(11)',
8
+ }
9
+
10
+ if condition(:mysql_awesome_enabled)
11
+ opts[:unsigned] = {unsigned: true}
12
+ opts[:sql_int_pk_type] = 'int PRIMARY KEY AUTO_INCREMENT'
13
+ opts[:sql_int_type] = 'int'
14
+ opts[:sql_uint_type] = 'int unsigned'
15
+ end
16
+
17
+ opts
18
+ }
19
+
3
20
  context 'when no operation' do
4
21
  let(:actual_dsl) { '' }
5
22
  let(:expected_dsl) {
6
- <<-RUBY
23
+ <<-EOS
7
24
  create_table "clubs", force: :cascade do |t|
8
25
  t.string "name", default: "", null: false
9
26
  end
@@ -68,7 +85,7 @@ describe 'Ridgepole::Client#diff -> migrate' do
68
85
  end
69
86
 
70
87
  add_index "titles", ["emp_no"], name: "emp_no", using: :btree
71
- RUBY
88
+ EOS
72
89
  }
73
90
 
74
91
  subject { client }
@@ -78,29 +95,27 @@ describe 'Ridgepole::Client#diff -> migrate' do
78
95
  expect(delta.differ?).to be_truthy
79
96
  migrated, sql = delta.migrate(:noop => true)
80
97
  expect(migrated).to be_truthy
81
- expect(subject.dump).to eq actual_dsl
98
+ expect(subject.dump).to match_fuzzy actual_dsl
82
99
 
83
- sql = sql.each_line.map {|i| i.strip }.join("\n")
84
-
85
- expect(sql).to eq <<-SQL.strip_heredoc.strip
86
- CREATE TABLE `clubs` (`id` #{if_mysql_awesome_enabled('int PRIMARY KEY AUTO_INCREMENT', 'int(11) auto_increment PRIMARY KEY')}, `name` varchar(255) DEFAULT '' NOT NULL) ENGINE=InnoDB
100
+ expect(sql).to match_fuzzy erbh(<<-EOS, template_variables)
101
+ CREATE TABLE `clubs` (`id` <%= @sql_int_pk_type %>, `name` varchar(255) DEFAULT '' NOT NULL) ENGINE=InnoDB
87
102
  CREATE UNIQUE INDEX `idx_name` USING btree ON `clubs` (`name`)
88
- CREATE TABLE `departments` (`dept_no` #{if_mysql_awesome_enabled('int PRIMARY KEY AUTO_INCREMENT', 'int(11) auto_increment PRIMARY KEY')}, `dept_name` varchar(40) NOT NULL) ENGINE=InnoDB
103
+ CREATE TABLE `departments` (`dept_no` <%= @sql_int_pk_type %>, `dept_name` varchar(40) NOT NULL) ENGINE=InnoDB
89
104
  CREATE UNIQUE INDEX `dept_name` USING btree ON `departments` (`dept_name`)
90
- CREATE TABLE `dept_emp` (`emp_no` #{if_mysql_awesome_enabled('int', 'int(11)')} NOT NULL, `dept_no` varchar(4) NOT NULL, `from_date` date NOT NULL, `to_date` date NOT NULL) ENGINE=InnoDB
105
+ CREATE TABLE `dept_emp` (`emp_no` <%= @sql_int_type %> NOT NULL, `dept_no` varchar(4) NOT NULL, `from_date` date NOT NULL, `to_date` date NOT NULL) ENGINE=InnoDB
91
106
  CREATE INDEX `dept_no` USING btree ON `dept_emp` (`dept_no`)
92
107
  CREATE INDEX `emp_no` USING btree ON `dept_emp` (`emp_no`)
93
- CREATE TABLE `dept_manager` (`dept_no` varchar(4) NOT NULL, `emp_no` #{if_mysql_awesome_enabled('int', 'int(11)')} NOT NULL, `from_date` date NOT NULL, `to_date` date NOT NULL) ENGINE=InnoDB
108
+ CREATE TABLE `dept_manager` (`dept_no` varchar(4) NOT NULL, `emp_no` <%= @sql_int_type %> NOT NULL, `from_date` date NOT NULL, `to_date` date NOT NULL) ENGINE=InnoDB
94
109
  CREATE INDEX `dept_no` USING btree ON `dept_manager` (`dept_no`)
95
110
  CREATE INDEX `emp_no` USING btree ON `dept_manager` (`emp_no`)
96
- CREATE TABLE `employee_clubs` (`id` #{if_mysql_awesome_enabled('int PRIMARY KEY AUTO_INCREMENT', 'int(11) auto_increment PRIMARY KEY')}, `emp_no` #{if_mysql_awesome_enabled('int unsigned', 'int(11)')} NOT NULL, `club_id` #{if_mysql_awesome_enabled('int unsigned', 'int(11)')} NOT NULL) ENGINE=InnoDB
111
+ CREATE TABLE `employee_clubs` (`id` <%= @sql_int_pk_type %>, `emp_no` <%= @sql_uint_type %> NOT NULL, `club_id` <%= @sql_uint_type %> NOT NULL) ENGINE=InnoDB
97
112
  CREATE INDEX `idx_emp_no_club_id` USING btree ON `employee_clubs` (`emp_no`, `club_id`)
98
- CREATE TABLE `employees` (`emp_no` #{if_mysql_awesome_enabled('int PRIMARY KEY AUTO_INCREMENT', 'int(11) auto_increment PRIMARY KEY')}, `birth_date` date NOT NULL, `first_name` varchar(14) NOT NULL, `last_name` varchar(16) NOT NULL, `gender` varchar(1) NOT NULL, `hire_date` date NOT NULL) ENGINE=InnoDB
99
- CREATE TABLE `salaries` (`emp_no` #{if_mysql_awesome_enabled('int', 'int(11)')} NOT NULL, `salary` #{if_mysql_awesome_enabled('int', 'int(11)')} NOT NULL, `from_date` date NOT NULL, `to_date` date NOT NULL) ENGINE=InnoDB
113
+ CREATE TABLE `employees` (`emp_no` <%= @sql_int_pk_type %>, `birth_date` date NOT NULL, `first_name` varchar(14) NOT NULL, `last_name` varchar(16) NOT NULL, `gender` varchar(1) NOT NULL, `hire_date` date NOT NULL) ENGINE=InnoDB
114
+ CREATE TABLE `salaries` (`emp_no` <%= @sql_int_type %> NOT NULL, `salary` <%= @sql_int_type %> NOT NULL, `from_date` date NOT NULL, `to_date` date NOT NULL) ENGINE=InnoDB
100
115
  CREATE INDEX `emp_no` USING btree ON `salaries` (`emp_no`)
101
- CREATE TABLE `titles` (`emp_no` #{if_mysql_awesome_enabled('int', 'int(11)')} NOT NULL, `title` varchar(50) NOT NULL, `from_date` date NOT NULL, `to_date` date) ENGINE=InnoDB
116
+ CREATE TABLE `titles` (`emp_no` <%= @sql_int_type %> NOT NULL, `title` varchar(50) NOT NULL, `from_date` date NOT NULL, `to_date` date) ENGINE=InnoDB
102
117
  CREATE INDEX `emp_no` USING btree ON `titles` (`emp_no`)
103
- SQL
118
+ EOS
104
119
  }
105
120
 
106
121
  it {
@@ -108,34 +123,32 @@ describe 'Ridgepole::Client#diff -> migrate' do
108
123
  expect(delta.differ?).to be_truthy
109
124
  migrated, sql = delta.migrate(:noop => true)
110
125
  expect(migrated).to be_truthy
111
- expect(subject.dump).to eq actual_dsl
112
-
113
- sql = sql.each_line.map {|i| i.strip }.join("\n")
126
+ expect(subject.dump).to match_fuzzy actual_dsl
114
127
 
115
- expect(sql).to eq <<-SQL.strip_heredoc.strip
116
- CREATE TABLE `clubs` (`id` #{if_mysql_awesome_enabled('int PRIMARY KEY AUTO_INCREMENT', 'int(11) auto_increment PRIMARY KEY')}, `name` varchar(255) DEFAULT '' NOT NULL) ENGINE=InnoDB
128
+ expect(sql).to match_fuzzy erbh(<<-EOS, template_variables)
129
+ CREATE TABLE `clubs` (`id` <%= @sql_int_pk_type %>, `name` varchar(255) DEFAULT '' NOT NULL) ENGINE=InnoDB
117
130
  ALTER TABLE `clubs` ADD UNIQUE INDEX idx_name (`name`)
118
- CREATE TABLE `departments` (`dept_no` #{if_mysql_awesome_enabled('int PRIMARY KEY AUTO_INCREMENT', 'int(11) auto_increment PRIMARY KEY')}, `dept_name` varchar(40) NOT NULL) ENGINE=InnoDB
131
+ CREATE TABLE `departments` (`dept_no` <%= @sql_int_pk_type %>, `dept_name` varchar(40) NOT NULL) ENGINE=InnoDB
119
132
  ALTER TABLE `departments` ADD UNIQUE INDEX dept_name (`dept_name`)
120
- CREATE TABLE `dept_emp` (`emp_no` #{if_mysql_awesome_enabled('int', 'int(11)')} NOT NULL, `dept_no` varchar(4) NOT NULL, `from_date` date NOT NULL, `to_date` date NOT NULL) ENGINE=InnoDB
133
+ CREATE TABLE `dept_emp` (`emp_no` <%= @sql_int_type %> NOT NULL, `dept_no` varchar(4) NOT NULL, `from_date` date NOT NULL, `to_date` date NOT NULL) ENGINE=InnoDB
121
134
  ALTER TABLE `dept_emp` ADD INDEX dept_no (`dept_no`), ADD INDEX emp_no (`emp_no`)
122
- CREATE TABLE `dept_manager` (`dept_no` varchar(4) NOT NULL, `emp_no` #{if_mysql_awesome_enabled('int', 'int(11)')} NOT NULL, `from_date` date NOT NULL, `to_date` date NOT NULL) ENGINE=InnoDB
135
+ CREATE TABLE `dept_manager` (`dept_no` varchar(4) NOT NULL, `emp_no` <%= @sql_int_type %> NOT NULL, `from_date` date NOT NULL, `to_date` date NOT NULL) ENGINE=InnoDB
123
136
  ALTER TABLE `dept_manager` ADD INDEX dept_no (`dept_no`), ADD INDEX emp_no (`emp_no`)
124
- CREATE TABLE `employee_clubs` (`id` #{if_mysql_awesome_enabled('int PRIMARY KEY AUTO_INCREMENT', 'int(11) auto_increment PRIMARY KEY')}, `emp_no` #{if_mysql_awesome_enabled('int unsigned', 'int(11)')} NOT NULL, `club_id` #{if_mysql_awesome_enabled('int unsigned', 'int(11)')} NOT NULL) ENGINE=InnoDB
137
+ CREATE TABLE `employee_clubs` (`id` <%= @sql_int_pk_type %>, `emp_no` <%= @sql_uint_type %> NOT NULL, `club_id` <%= @sql_uint_type %> NOT NULL) ENGINE=InnoDB
125
138
  ALTER TABLE `employee_clubs` ADD INDEX idx_emp_no_club_id (`emp_no`, `club_id`)
126
- CREATE TABLE `employees` (`emp_no` #{if_mysql_awesome_enabled('int PRIMARY KEY AUTO_INCREMENT', 'int(11) auto_increment PRIMARY KEY')}, `birth_date` date NOT NULL, `first_name` varchar(14) NOT NULL, `last_name` varchar(16) NOT NULL, `gender` varchar(1) NOT NULL, `hire_date` date NOT NULL) ENGINE=InnoDB
127
- CREATE TABLE `salaries` (`emp_no` #{if_mysql_awesome_enabled('int', 'int(11)')} NOT NULL, `salary` #{if_mysql_awesome_enabled('int', 'int(11)')} NOT NULL, `from_date` date NOT NULL, `to_date` date NOT NULL) ENGINE=InnoDB
139
+ CREATE TABLE `employees` (`emp_no` <%= @sql_int_pk_type %>, `birth_date` date NOT NULL, `first_name` varchar(14) NOT NULL, `last_name` varchar(16) NOT NULL, `gender` varchar(1) NOT NULL, `hire_date` date NOT NULL) ENGINE=InnoDB
140
+ CREATE TABLE `salaries` (`emp_no` <%= @sql_int_type %> NOT NULL, `salary` <%= @sql_int_type %> NOT NULL, `from_date` date NOT NULL, `to_date` date NOT NULL) ENGINE=InnoDB
128
141
  ALTER TABLE `salaries` ADD INDEX emp_no (`emp_no`)
129
- CREATE TABLE `titles` (`emp_no` #{if_mysql_awesome_enabled('int', 'int(11)')} NOT NULL, `title` varchar(50) NOT NULL, `from_date` date NOT NULL, `to_date` date) ENGINE=InnoDB
142
+ CREATE TABLE `titles` (`emp_no` <%= @sql_int_type %> NOT NULL, `title` varchar(50) NOT NULL, `from_date` date NOT NULL, `to_date` date) ENGINE=InnoDB
130
143
  ALTER TABLE `titles` ADD INDEX emp_no (`emp_no`)
131
- SQL
144
+ EOS
132
145
  }
133
146
  end
134
147
 
135
148
  context 'when no operation' do
136
149
  let(:actual_dsl) { '' }
137
150
  let(:expected_dsl) {
138
- <<-RUBY
151
+ <<-EOS
139
152
  create_table "clubs", force: :cascade do |t|
140
153
  t.string "name", default: "", null: false
141
154
  end
@@ -200,7 +213,7 @@ describe 'Ridgepole::Client#diff -> migrate' do
200
213
  end
201
214
 
202
215
  add_index "titles", ["emp_no"], name: "emp_no", using: :btree
203
- RUBY
216
+ EOS
204
217
  }
205
218
 
206
219
  subject { client(:default_int_limit => 11) }
@@ -210,30 +223,27 @@ describe 'Ridgepole::Client#diff -> migrate' do
210
223
  expect(delta.differ?).to be_truthy
211
224
  migrated, sql = delta.migrate(:noop => true)
212
225
  expect(migrated).to be_truthy
213
- expect(subject.dump).to eq actual_dsl
226
+ expect(subject.dump).to match_fuzzy actual_dsl
214
227
 
215
- sql = sql.each_line.map {|i| i.strip }.join("\n")
216
-
217
- expect(sql).to eq <<-SQL.strip_heredoc.strip
218
- CREATE TABLE `clubs` (`id` #{if_mysql_awesome_enabled('int PRIMARY KEY AUTO_INCREMENT', 'int(11) auto_increment PRIMARY KEY')}, `name` varchar(255) DEFAULT '' NOT NULL) ENGINE=InnoDB
228
+ expect(sql).to match_fuzzy erbh(<<-EOS, template_variables)
229
+ CREATE TABLE `clubs` (`id` <%= @sql_int_pk_type %>, `name` varchar(255) DEFAULT '' NOT NULL) ENGINE=InnoDB
219
230
  CREATE UNIQUE INDEX `idx_name` USING btree ON `clubs` (`name`)
220
- CREATE TABLE `departments` (`dept_no` #{if_mysql_awesome_enabled('int PRIMARY KEY AUTO_INCREMENT', 'int(11) auto_increment PRIMARY KEY')}, `dept_name` varchar(40) NOT NULL) ENGINE=InnoDB
231
+ CREATE TABLE `departments` (`dept_no` <%= @sql_int_pk_type %>, `dept_name` varchar(40) NOT NULL) ENGINE=InnoDB
221
232
  CREATE UNIQUE INDEX `dept_name` USING btree ON `departments` (`dept_name`)
222
- CREATE TABLE `dept_emp` (`emp_no` #{if_mysql_awesome_enabled('int', 'int(11)')} NOT NULL, `dept_no` varchar(4) NOT NULL, `from_date` date NOT NULL, `to_date` date NOT NULL) ENGINE=InnoDB
233
+ CREATE TABLE `dept_emp` (`emp_no` <%= @sql_int_type %> NOT NULL, `dept_no` varchar(4) NOT NULL, `from_date` date NOT NULL, `to_date` date NOT NULL) ENGINE=InnoDB
223
234
  CREATE INDEX `dept_no` USING btree ON `dept_emp` (`dept_no`)
224
235
  CREATE INDEX `emp_no` USING btree ON `dept_emp` (`emp_no`)
225
- CREATE TABLE `dept_manager` (`dept_no` varchar(4) NOT NULL, `emp_no` #{if_mysql_awesome_enabled('int', 'int(11)')} NOT NULL, `from_date` date NOT NULL, `to_date` date NOT NULL) ENGINE=InnoDB
236
+ CREATE TABLE `dept_manager` (`dept_no` varchar(4) NOT NULL, `emp_no` <%= @sql_int_type %> NOT NULL, `from_date` date NOT NULL, `to_date` date NOT NULL) ENGINE=InnoDB
226
237
  CREATE INDEX `dept_no` USING btree ON `dept_manager` (`dept_no`)
227
238
  CREATE INDEX `emp_no` USING btree ON `dept_manager` (`emp_no`)
228
- CREATE TABLE `employee_clubs` (`id` #{if_mysql_awesome_enabled('int PRIMARY KEY AUTO_INCREMENT', 'int(11) auto_increment PRIMARY KEY')}, `emp_no` #{if_mysql_awesome_enabled('int unsigned', 'int(11)')} NOT NULL, `club_id` #{if_mysql_awesome_enabled('int unsigned', 'int(11)')} NOT NULL) ENGINE=InnoDB
239
+ CREATE TABLE `employee_clubs` (`id` <%= @sql_int_pk_type %>, `emp_no` <%= @sql_uint_type %> NOT NULL, `club_id` <%= @sql_uint_type %> NOT NULL) ENGINE=InnoDB
229
240
  CREATE INDEX `idx_emp_no_club_id` USING btree ON `employee_clubs` (`emp_no`, `club_id`)
230
- CREATE TABLE `employees` (`emp_no` #{if_mysql_awesome_enabled('int PRIMARY KEY AUTO_INCREMENT', 'int(11) auto_increment PRIMARY KEY')}, `birth_date` date NOT NULL, `first_name` varchar(14) NOT NULL, `last_name` varchar(16) NOT NULL, `gender` varchar(1) NOT NULL, `hire_date` date NOT NULL) ENGINE=InnoDB
231
- CREATE TABLE `salaries` (`emp_no` #{if_mysql_awesome_enabled('int', 'int(11)')} NOT NULL, `salary` #{if_mysql_awesome_enabled('int', 'int(11)')} NOT NULL, `from_date` date NOT NULL, `to_date` date NOT NULL) ENGINE=InnoDB
241
+ CREATE TABLE `employees` (`emp_no` <%= @sql_int_pk_type %>, `birth_date` date NOT NULL, `first_name` varchar(14) NOT NULL, `last_name` varchar(16) NOT NULL, `gender` varchar(1) NOT NULL, `hire_date` date NOT NULL) ENGINE=InnoDB
242
+ CREATE TABLE `salaries` (`emp_no` <%= @sql_int_type %> NOT NULL, `salary` <%= @sql_int_type %> NOT NULL, `from_date` date NOT NULL, `to_date` date NOT NULL) ENGINE=InnoDB
232
243
  CREATE INDEX `emp_no` USING btree ON `salaries` (`emp_no`)
233
- CREATE TABLE `titles` (`emp_no` #{if_mysql_awesome_enabled('int', 'int(11)')} NOT NULL, `title` varchar(50) NOT NULL, `from_date` date NOT NULL, `to_date` date) ENGINE=InnoDB
244
+ CREATE TABLE `titles` (`emp_no` <%= @sql_int_type %> NOT NULL, `title` varchar(50) NOT NULL, `from_date` date NOT NULL, `to_date` date) ENGINE=InnoDB
234
245
  CREATE INDEX `emp_no` USING btree ON `titles` (`emp_no`)
235
- SQL
246
+ EOS
236
247
  }
237
248
  end
238
249
  end
239
- 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 rename 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|
39
- t.integer "emp_no", limit: 4, null: false#{unsigned_if_enabled}
40
- t.integer "club_id", limit: 4, null: false#{unsigned_if_enabled}
49
+ create_table "employee_clubs", <%= {force: :cascade}.unshift(@unsigned).i %> do |t|
50
+ t.integer "emp_no", <%= {limit: 4, null: false}.push(@unsigned).i %>
51
+ t.integer "club_id", <%= {limit: 4, null: false}.push(@unsigned).i %>
41
52
  end
42
53
 
43
54
  add_index "employee_clubs", ["emp_no", "club_id"], name: "idx_emp_no_club_id", using: :btree
44
55
 
45
- create_table "employees", primary_key: "emp_no"#{unsigned_if_enabled}, force: :cascade do |t|
56
+ create_table "employees", primary_key: "emp_no", <%= {force: :cascade}.unshift(@unsigned).i %> do |t|
46
57
  t.date "birth_date", null: false
47
58
  t.string "first_name", limit: 14, null: false
48
59
  t.string "last_name", limit: 16, null: false
@@ -67,18 +78,18 @@ describe 'Ridgepole::Client#diff -> migrate' do
67
78
  end
68
79
 
69
80
  add_index "titles", ["emp_no"], name: "emp_no", using: :btree
70
- RUBY
81
+ EOS
71
82
  }
72
83
 
73
84
  let(:expected_dsl) {
74
- <<-RUBY
75
- create_table "clubs"#{unsigned_if_enabled}, force: :cascade do |t|
85
+ erbh(<<-EOS, template_variables)
86
+ create_table "clubs", <%= {force: :cascade}.unshift(@unsigned).i %> do |t|
76
87
  t.string "name", limit: 255, default: "", null: false
77
88
  end
78
89
 
79
90
  add_index "clubs", ["name"], name: "idx_name", unique: true, using: :btree
80
91
 
81
- create_table "departments", primary_key: "dept_no"#{unsigned_if_enabled}, force: :cascade do |t|
92
+ create_table "departments", primary_key: "dept_no", <%= {force: :cascade}.unshift(@unsigned).i %> do |t|
82
93
  t.string "dept_name", limit: 40, null: false
83
94
  end
84
95
 
@@ -104,14 +115,14 @@ describe 'Ridgepole::Client#diff -> migrate' do
104
115
  add_index "dept_manager", ["dept_no"], name: "dept_no", using: :btree
105
116
  add_index "dept_manager", ["emp_no"], name: "emp_no", using: :btree
106
117
 
107
- create_table "employee_clubs"#{unsigned_if_enabled}, force: :cascade do |t|
108
- t.integer "emp_no", limit: 4, null: false#{unsigned_if_enabled}
109
- t.integer "club_id", limit: 4, null: false#{unsigned_if_enabled}
118
+ create_table "employee_clubs", <%= {force: :cascade}.unshift(@unsigned).i %> do |t|
119
+ t.integer "emp_no", <%= {limit: 4, null: false}.push(@unsigned).i %>
120
+ t.integer "club_id", <%= {limit: 4, null: false}.push(@unsigned).i %>
110
121
  end
111
122
 
112
123
  add_index "employee_clubs", ["emp_no", "club_id"], name: "idx_emp_no_club_id", using: :btree
113
124
 
114
- create_table "employees", primary_key: "emp_no"#{unsigned_if_enabled}, force: :cascade do |t|
125
+ create_table "employees", primary_key: "emp_no", <%= {force: :cascade}.unshift(@unsigned).i %> do |t|
115
126
  t.date "birth_date", null: false
116
127
  t.string "first_name", limit: 14, null: false
117
128
  t.string "last_name", limit: 16, null: false
@@ -136,7 +147,7 @@ describe 'Ridgepole::Client#diff -> migrate' do
136
147
  end
137
148
 
138
149
  add_index "titles", ["emp_no"], name: "emp_no", using: :btree
139
- RUBY
150
+ EOS
140
151
  }
141
152
 
142
153
  before { subject.diff(actual_dsl).migrate }
@@ -145,28 +156,28 @@ describe 'Ridgepole::Client#diff -> migrate' do
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
150
- expect(subject.dump).to eq expected_dsl.strip_heredoc.strip.gsub(/\s*,\s*renamed_from:.*$/, '')
161
+ expect(subject.dump).to match_fuzzy expected_dsl.gsub(/\s*,\s*renamed_from:.*$/, '')
151
162
  }
152
163
 
153
164
  it {
154
165
  delta = Ridgepole::Client.diff(actual_dsl, expected_dsl, reverse: true)
155
166
  expect(delta.differ?).to be_truthy
156
- expect(delta.script).to eq <<-RUBY.strip_heredoc.strip
167
+ expect(delta.script).to match_fuzzy <<-EOS
157
168
  rename_column("dept_emp", "from_date2", "from_date")
158
169
 
159
170
  rename_column("dept_manager", "to_date2", "to_date")
160
171
 
161
172
  rename_column("employees", "gender2", "gender")
162
- RUBY
173
+ EOS
163
174
  }
164
175
 
165
176
  it {
166
177
  delta = client(:bulk_change => true).diff(expected_dsl)
167
178
  expect(delta.differ?).to be_truthy
168
- expect(subject.dump).to eq actual_dsl.strip_heredoc.strip
169
- expect(delta.script).to eq <<-RUBY.strip_heredoc.strip
179
+ expect(subject.dump).to match_fuzzy actual_dsl
180
+ expect(delta.script).to match_fuzzy <<-EOS
170
181
  change_table("dept_emp", {:bulk => true}) do |t|
171
182
  t.rename("from_date", "from_date2")
172
183
  end
@@ -178,9 +189,9 @@ describe 'Ridgepole::Client#diff -> migrate' do
178
189
  change_table("employees", {:bulk => true}) do |t|
179
190
  t.rename("gender", "gender2")
180
191
  end
181
- RUBY
192
+ EOS
182
193
  delta.migrate
183
- expect(subject.dump).to eq expected_dsl.strip_heredoc.strip.gsub(/\s*,\s*renamed_from:.*$/, '')
194
+ expect(subject.dump).to match_fuzzy expected_dsl.gsub(/\s*,\s*renamed_from:.*$/, '')
184
195
  }
185
196
  end
186
197
 
@@ -189,7 +200,7 @@ describe 'Ridgepole::Client#diff -> migrate' do
189
200
  subject { client }
190
201
 
191
202
  let(:dsl) {
192
- <<-RUBY
203
+ <<-EOS
193
204
  create_table "employees", primary_key: "emp_no", force: :cascade do |t|
194
205
  t.date "birth_date", null: false
195
206
  t.string "first_name", limit: 14, null: false
@@ -197,7 +208,7 @@ describe 'Ridgepole::Client#diff -> migrate' do
197
208
  t.string "gender2", limit: 1, null: false, renamed_from: 'age'
198
209
  t.date "hire_date", null: false
199
210
  end
200
- RUBY
211
+ EOS
201
212
  }
202
213
 
203
214
  it {
@@ -207,4 +218,3 @@ describe 'Ridgepole::Client#diff -> migrate' do
207
218
  }
208
219
  end
209
220
  end
210
- 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 rename table' do
4
15
  let(:actual_dsl) {
5
- <<-RUBY
6
- create_table "clubs"#{unsigned_if_enabled}, force: :cascade do |t|
16
+ erbh(<<-EOS, template_variables)
17
+ create_table "clubs", <%= {force: :cascade}.unshift(@unsigned).i %> do |t|
7
18
  t.string "name", limit: 255, default: "", null: false
8
19
  end
9
20
 
10
21
  add_index "clubs", ["name"], name: "idx_name", unique: true, using: :btree
11
22
 
12
- create_table "departments", primary_key: "dept_no"#{unsigned_if_enabled}, force: :cascade do |t|
23
+ create_table "departments", primary_key: "dept_no", <%= {force: :cascade}.unshift(@unsigned).i %> do |t|
13
24
  t.string "dept_name", limit: 40, null: false
14
25
  end
15
26
 
@@ -35,14 +46,14 @@ describe 'Ridgepole::Client#diff -> migrate' do
35
46
  add_index "dept_manager", ["dept_no"], name: "dept_no", using: :btree
36
47
  add_index "dept_manager", ["emp_no"], name: "emp_no", using: :btree
37
48
 
38
- create_table "employee_clubs"#{unsigned_if_enabled}, force: :cascade do |t|
39
- t.integer "emp_no", limit: 4, null: false#{unsigned_if_enabled}
40
- t.integer "club_id", limit: 4, null: false#{unsigned_if_enabled}
49
+ create_table "employee_clubs", <%= {force: :cascade}.unshift(@unsigned).i %> do |t|
50
+ t.integer "emp_no", <%= {limit: 4, null: false}.push(@unsigned).i %>
51
+ t.integer "club_id", <%= {limit: 4, null: false}.push(@unsigned).i %>
41
52
  end
42
53
 
43
54
  add_index "employee_clubs", ["emp_no", "club_id"], name: "idx_emp_no_club_id", using: :btree
44
55
 
45
- create_table "employees", primary_key: "emp_no"#{unsigned_if_enabled}, force: :cascade do |t|
56
+ create_table "employees", primary_key: "emp_no", <%= {force: :cascade}.unshift(@unsigned).i %> do |t|
46
57
  t.date "birth_date", null: false
47
58
  t.string "first_name", limit: 14, null: false
48
59
  t.string "last_name", limit: 16, null: false
@@ -67,18 +78,18 @@ describe 'Ridgepole::Client#diff -> migrate' do
67
78
  end
68
79
 
69
80
  add_index "titles", ["emp_no"], name: "emp_no", using: :btree
70
- RUBY
81
+ EOS
71
82
  }
72
83
 
73
84
  let(:expected_dsl) {
74
- <<-RUBY
75
- create_table "clubs"#{unsigned_if_enabled}, force: :cascade do |t|
85
+ erbh(<<-EOS, template_variables)
86
+ create_table "clubs", <%= {force: :cascade}.unshift(@unsigned).i %> do |t|
76
87
  t.string "name", limit: 255, default: "", null: false
77
88
  end
78
89
 
79
90
  add_index "clubs", ["name"], name: "idx_name", unique: true, using: :btree
80
91
 
81
- create_table "departments", primary_key: "dept_no"#{unsigned_if_enabled}, force: :cascade do |t|
92
+ create_table "departments", primary_key: "dept_no", <%= {force: :cascade}.unshift(@unsigned).i %> do |t|
82
93
  t.string "dept_name", limit: 40, null: false
83
94
  end
84
95
 
@@ -104,14 +115,14 @@ describe 'Ridgepole::Client#diff -> migrate' do
104
115
  add_index "dept_manager", ["dept_no"], name: "dept_no", using: :btree
105
116
  add_index "dept_manager", ["emp_no"], name: "emp_no", using: :btree
106
117
 
107
- create_table "employee_clubs"#{unsigned_if_enabled}, force: :cascade do |t|
108
- t.integer "emp_no", limit: 4, null: false#{unsigned_if_enabled}
109
- t.integer "club_id", limit: 4, null: false#{unsigned_if_enabled}
118
+ create_table "employee_clubs", <%= {force: :cascade}.unshift(@unsigned).i %> do |t|
119
+ t.integer "emp_no", <%= {limit: 4, null: false}.push(@unsigned).i %>
120
+ t.integer "club_id", <%= {limit: 4, null: false}.push(@unsigned).i %>
110
121
  end
111
122
 
112
123
  add_index "employee_clubs", ["emp_no", "club_id"], name: "idx_emp_no_club_id", using: :btree
113
124
 
114
- create_table "employees2", primary_key: "emp_no"#{unsigned_if_enabled}, force: :cascade, renamed_from: 'employees' do |t|
125
+ create_table "employees2", primary_key: "emp_no", <%= {force: :cascade}.unshift(@unsigned).i %>, renamed_from: 'employees' do |t|
115
126
  t.date "birth_date", null: false
116
127
  t.string "first_name", limit: 14, null: false
117
128
  t.string "last_name", limit: 16, null: false
@@ -136,7 +147,7 @@ describe 'Ridgepole::Client#diff -> migrate' do
136
147
  end
137
148
 
138
149
  add_index "titles", ["emp_no"], name: "emp_no", using: :btree
139
- RUBY
150
+ EOS
140
151
  }
141
152
 
142
153
  before { subject.diff(actual_dsl).migrate }
@@ -145,24 +156,24 @@ describe 'Ridgepole::Client#diff -> migrate' do
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
150
- expect(subject.dump).to eq expected_dsl.strip_heredoc.strip.gsub(/, renamed_from: 'employees'/, '')
161
+ expect(subject.dump).to match_fuzzy expected_dsl.gsub(/, renamed_from: 'employees'/, '')
151
162
  }
152
163
 
153
164
  it {
154
165
  delta = Ridgepole::Client.diff(actual_dsl, expected_dsl, reverse: true)
155
166
  expect(delta.differ?).to be_truthy
156
- expect(delta.script).to eq <<-RUBY.strip_heredoc.strip
167
+ expect(delta.script).to match_fuzzy <<-EOS
157
168
  rename_table("employees2", "employees")
158
- RUBY
169
+ EOS
159
170
  }
160
171
  end
161
172
 
162
173
  context 'when rename table (dry-run)' do
163
174
  let(:actual_dsl) {
164
- <<-RUBY
165
- create_table "employees", primary_key: "emp_no"#{unsigned_if_enabled}, force: :cascade do |t|
175
+ erbh(<<-EOS, template_variables)
176
+ create_table "employees", primary_key: "emp_no", <%= {force: :cascade}.unshift(@unsigned).i %> do |t|
166
177
  t.date "birth_date", null: false
167
178
  t.string "first_name", limit: 14, null: false
168
179
  t.string "last_name", limit: 16, null: false
@@ -171,12 +182,12 @@ describe 'Ridgepole::Client#diff -> migrate' do
171
182
  end
172
183
 
173
184
  add_index "employees", ["first_name"], name: "first_name", using: :btree
174
- RUBY
185
+ EOS
175
186
  }
176
187
 
177
188
  let(:expected_dsl) {
178
- <<-RUBY
179
- create_table "employees2", primary_key: "emp_no"#{unsigned_if_enabled}, force: :cascade, renamed_from: 'employees' do |t|
189
+ erbh(<<-EOS, template_variables)
190
+ create_table "employees2", primary_key: "emp_no", <%= {force: :cascade}.unshift(@unsigned).i %>, renamed_from: 'employees' do |t|
180
191
  t.date "birth_date", null: false
181
192
  t.string "first_name", limit: 14, null: false
182
193
  t.string "last_name", limit: 16, null: false
@@ -185,7 +196,7 @@ describe 'Ridgepole::Client#diff -> migrate' do
185
196
  end
186
197
 
187
198
  add_index "employees2", ["first_name"], name: "first_name", using: :btree
188
- RUBY
199
+ EOS
189
200
  }
190
201
 
191
202
  before { subject.diff(actual_dsl).migrate }
@@ -194,9 +205,9 @@ describe 'Ridgepole::Client#diff -> migrate' do
194
205
  it {
195
206
  delta = subject.diff(expected_dsl)
196
207
  expect(delta.differ?).to be_truthy
197
- expect(subject.dump).to eq actual_dsl.strip_heredoc.strip
208
+ expect(subject.dump).to match_fuzzy actual_dsl
198
209
  delta.migrate(noop: true)
199
- expect(subject.dump).to eq actual_dsl.strip_heredoc.strip
210
+ expect(subject.dump).to match_fuzzy actual_dsl
200
211
  }
201
212
  end
202
213
 
@@ -205,15 +216,15 @@ describe 'Ridgepole::Client#diff -> migrate' do
205
216
  subject { client }
206
217
 
207
218
  let(:dsl) {
208
- <<-RUBY
209
- create_table "employees2", primary_key: "emp_no"#{unsigned_if_enabled}, force: :cascade, renamed_from: 'not_employees' do |t|
219
+ erbh(<<-EOS, template_variables)
220
+ create_table "employees2", primary_key: "emp_no", <%= {force: :cascade}.unshift(@unsigned).i %>, renamed_from: 'not_employees' do |t|
210
221
  t.date "birth_date", null: false
211
222
  t.string "first_name", limit: 14, null: false
212
223
  t.string "last_name", limit: 16, null: false
213
224
  t.string "gender", limit: 1, null: false
214
225
  t.date "hire_date", null: false
215
226
  end
216
- RUBY
227
+ EOS
217
228
  }
218
229
 
219
230
  it {
@@ -224,4 +235,3 @@ describe 'Ridgepole::Client#diff -> migrate' do
224
235
  }
225
236
  end
226
237
  end
227
- end
@@ -1,28 +1,39 @@
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 database and definition are same (default null / nothing -> null:true)' do
4
15
  let(:actual_dsl) {
5
- <<-RUBY
6
- create_table "employees", primary_key: "emp_no"#{unsigned_if_enabled}, force: :cascade do |t|
16
+ erbh(<<-EOS, template_variables)
17
+ create_table "employees", primary_key: "emp_no", <%= {force: :cascade}.unshift(@unsigned).i %> do |t|
7
18
  t.date "birth_date", null: false
8
19
  t.string "first_name", limit: 14, null: false
9
20
  t.string "last_name", limit: 16, null: false
10
21
  t.string "gender", limit: 1, null: false
11
22
  t.date "hire_date"
12
23
  end
13
- RUBY
24
+ EOS
14
25
  }
15
26
 
16
27
  let(:expected_dsl) {
17
- <<-RUBY
18
- create_table "employees", primary_key: "emp_no"#{unsigned_if_enabled}, force: :cascade do |t|
28
+ erbh(<<-EOS, template_variables)
29
+ create_table "employees", primary_key: "emp_no", <%= {force: :cascade}.unshift(@unsigned).i %> do |t|
19
30
  t.date "birth_date", null: false
20
31
  t.string "first_name", limit: 14, null: false
21
32
  t.string "last_name", limit: 16, null: false
22
33
  t.string "gender", limit: 1, null: false
23
34
  t.date "hire_date", null: true
24
35
  end
25
- RUBY
36
+ EOS
26
37
  }
27
38
 
28
39
  before { subject.diff(actual_dsl).migrate }
@@ -31,35 +42,35 @@ describe 'Ridgepole::Client#diff -> migrate' do
31
42
  it {
32
43
  delta = subject.diff(expected_dsl)
33
44
  expect(delta.differ?).to be_falsey
34
- expect(subject.dump).to eq actual_dsl.strip_heredoc.strip
45
+ expect(subject.dump).to match_fuzzy actual_dsl
35
46
  delta.migrate
36
- expect(subject.dump).to eq expected_dsl.strip_heredoc.strip.gsub(/\s*,\s*null: true/, '')
47
+ expect(subject.dump).to match_fuzzy expected_dsl.gsub(/\s*,\s*null: true/, '')
37
48
  }
38
49
  end
39
50
 
40
51
  context 'when database and definition are same (default null / null:true -> nothing)' do
41
52
  let(:actual_dsl) {
42
- <<-RUBY
43
- create_table "employees", primary_key: "emp_no"#{unsigned_if_enabled}, force: :cascade do |t|
53
+ erbh(<<-EOS, template_variables)
54
+ create_table "employees", primary_key: "emp_no", <%= {force: :cascade}.unshift(@unsigned).i %> do |t|
44
55
  t.date "birth_date", null: false
45
56
  t.string "first_name", limit: 14, null: false
46
57
  t.string "last_name", limit: 16, null: false
47
58
  t.string "gender", limit: 1, null: false
48
59
  t.date "hire_date", null: true
49
60
  end
50
- RUBY
61
+ EOS
51
62
  }
52
63
 
53
64
  let(:expected_dsl) {
54
- <<-RUBY
55
- create_table "employees", primary_key: "emp_no"#{unsigned_if_enabled}, force: :cascade do |t|
65
+ erbh(<<-EOS, template_variables)
66
+ create_table "employees", primary_key: "emp_no", <%= {force: :cascade}.unshift(@unsigned).i %> do |t|
56
67
  t.date "birth_date", null: false
57
68
  t.string "first_name", limit: 14, null: false
58
69
  t.string "last_name", limit: 16, null: false
59
70
  t.string "gender", limit: 1, null: false
60
71
  t.date "hire_date"
61
72
  end
62
- RUBY
73
+ EOS
63
74
  }
64
75
 
65
76
  before { subject.diff(actual_dsl).migrate }
@@ -68,10 +79,9 @@ describe 'Ridgepole::Client#diff -> migrate' do
68
79
  it {
69
80
  delta = subject.diff(expected_dsl)
70
81
  expect(delta.differ?).to be_falsey
71
- expect(subject.dump).to eq actual_dsl.strip_heredoc.strip.gsub(/\s*,\s*null: true/, '')
82
+ expect(subject.dump).to match_fuzzy actual_dsl.gsub(/\s*,\s*null: true/, '')
72
83
  delta.migrate
73
- expect(subject.dump).to eq expected_dsl.strip_heredoc.strip
84
+ expect(subject.dump).to match_fuzzy expected_dsl
74
85
  }
75
86
  end
76
87
  end
77
- end