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