sequel-sequence 0.3.0 → 0.4.1

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.
@@ -0,0 +1,100 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'mock_test_helper'
4
+
5
+ class MockSequenceTest < Minitest::Test
6
+ test 'checks check_options with params' do
7
+ mocked_method = Minitest::Mock.new
8
+ some_instance = MockDB
9
+
10
+ mocked_method.expect :call, true, [Sequel::Database::DANGER_OPT_INCREMENT]
11
+ some_instance.stub :log_info, mocked_method do
12
+ some_instance.check_options({ increment: 2 })
13
+ end
14
+ mocked_method.verify
15
+
16
+ mocked_method.expect :call, true, [Sequel::Database::DANGER_OPT_INCREMENT]
17
+ some_instance.stub :log_info, mocked_method do
18
+ some_instance.check_options({ step: 2 })
19
+ end
20
+ mocked_method.verify
21
+ end
22
+
23
+ test 'checks custom_sequence?' do
24
+ assert_raises Sequel::MethodNotAllowed do
25
+ MockDB.custom_sequence?(:position)
26
+ end
27
+ end
28
+
29
+ test 'checks check_sequences' do
30
+ assert_raises Sequel::MethodNotAllowed do
31
+ MockDB.check_sequences
32
+ end
33
+ end
34
+
35
+ test 'checks create_sequence' do
36
+ assert_raises Sequel::MethodNotAllowed do
37
+ MockDB.create_sequence(:position)
38
+ end
39
+ end
40
+
41
+ test 'checks drop_sequence' do
42
+ assert_raises Sequel::MethodNotAllowed do
43
+ MockDB.drop_sequence(:position)
44
+ end
45
+ end
46
+
47
+ test 'checks quote_name' do
48
+ assert_raises Sequel::MethodNotAllowed do
49
+ MockDB.quote_name(:position)
50
+ end
51
+ end
52
+
53
+ test 'checks quote' do
54
+ assert_raises Sequel::MethodNotAllowed do
55
+ MockDB.quote(:position)
56
+ end
57
+ end
58
+
59
+ test 'checks nextval_with_label' do
60
+ assert_raises Sequel::MethodNotAllowed do
61
+ MockDB.nextval_with_label(:position, 100)
62
+ end
63
+ end
64
+
65
+ test 'checks nextval' do
66
+ assert_raises Sequel::MethodNotAllowed do
67
+ MockDB.nextval(:position)
68
+ end
69
+ end
70
+
71
+ test 'checks currval' do
72
+ assert_raises Sequel::MethodNotAllowed do
73
+ MockDB.currval(:position)
74
+ end
75
+ end
76
+
77
+ test 'checks lastval' do
78
+ assert_raises Sequel::MethodNotAllowed do
79
+ MockDB.lastval(:position)
80
+ end
81
+ end
82
+
83
+ test 'checks setval' do
84
+ assert_raises Sequel::MethodNotAllowed do
85
+ MockDB.setval(:position, 100)
86
+ end
87
+ end
88
+
89
+ test 'checks build_exists_condition for a true condition' do
90
+ assert_equal Sequel::Database::IF_EXISTS, MockDB.build_exists_condition(true)
91
+ end
92
+
93
+ test 'checks build_exists_condition for a false condition' do
94
+ assert_equal Sequel::Database::IF_NOT_EXISTS, MockDB.build_exists_condition(false)
95
+ end
96
+
97
+ test 'checks build_exists_condition for a non boolean condition' do
98
+ assert_nil MockDB.build_exists_condition('')
99
+ end
100
+ end
@@ -12,13 +12,28 @@ class MysqlSequenceTest < Minitest::Test
12
12
  test 'adds sequence with default values' do
13
13
  with_migration do
14
14
  def up
15
- # create_sequence :position, {start: 1, increment: 1} - default values
15
+ # create_sequence :position, {start: 1, increment: 1, numeric_label: 0} - default values
16
16
  create_sequence :position
17
17
  end
18
18
  end.up
19
19
 
20
- assert_equal 1, MysqlDB.nextval(:position)
21
20
  assert_equal 2, MysqlDB.nextval(:position)
21
+ assert_equal 3, MysqlDB.nextval(:position)
22
+ end
23
+
24
+ test 'adds sequence with numeric_label' do
25
+ with_migration do
26
+ def up
27
+ # create_sequence :position, {start: 1, increment: 1, numeric_label: 0} - default values
28
+ create_sequence :position, numeric_label: 10
29
+ end
30
+ end.up
31
+
32
+ assert_equal 1, MysqlDB.currval(:position)
33
+
34
+ fiction_list = MysqlDB.fetch('SELECT fiction FROM position;').all
35
+ assert_equal 1, fiction_list.size
36
+ assert_equal 10, fiction_list.first[:fiction]
22
37
  end
23
38
 
24
39
  test 'adds sequence reader within model and its inherited class' do
@@ -28,15 +43,15 @@ class MysqlSequenceTest < Minitest::Test
28
43
  end
29
44
  end.up
30
45
 
31
- class Ware < Sequel::Model; end
46
+ class Stuff < Sequel::Model; end
32
47
 
33
- assert_equal 1, Ware.db.nextval('position')
34
- assert_equal 2, Ware.db.nextval('position')
48
+ assert_equal 2, Stuff.db.nextval('position')
49
+ assert_equal 3, Stuff.db.nextval('position')
35
50
 
36
- class InheritedWare < Ware; end
51
+ class InheritedStuff < Stuff; end
37
52
 
38
- assert_equal 3, InheritedWare.db.nextval(:position)
39
- assert_equal 4, InheritedWare.db.nextval(:position)
53
+ assert_equal 4, InheritedStuff.db.nextval(:position)
54
+ assert_equal 5, InheritedStuff.db.nextval(:position)
40
55
  end
41
56
 
42
57
  test 'adds sequence starting at 100' do
@@ -46,30 +61,34 @@ class MysqlSequenceTest < Minitest::Test
46
61
  end
47
62
  end.up
48
63
 
49
- assert_equal 100, MysqlDB.nextval(:position)
50
64
  assert_equal 101, MysqlDB.nextval(:position)
65
+ assert_equal 102, MysqlDB.nextval(:position)
51
66
  end
52
67
 
53
- test 'adds sequence incremented by 2' do
68
+ test 'adds a sequence that we are trying to increase by a value greater than 1' do
69
+ @step = 4
54
70
  with_migration do
55
71
  def up
56
- create_sequence :position, increment: 2
72
+ create_sequence :position, increment: 4
57
73
  end
58
74
  end.up
59
75
 
60
- assert_equal 1, MysqlDB.nextval(:position)
76
+ assert_equal 2, MysqlDB.nextval(:position)
61
77
  assert_equal 3, MysqlDB.nextval(:position)
78
+ assert_operator (2 + @step), :>, MysqlDB.nextval(:position)
62
79
  end
63
80
 
64
- test 'adds sequence incremented by 2 (using :step alias)' do
81
+ test 'adds a sequence that we are trying to increase by a value greater than 1 (using :step alias)' do
82
+ @step = 4
65
83
  with_migration do
66
84
  def up
67
- create_sequence :position, step: 2
85
+ create_sequence :position, step: 4
68
86
  end
69
87
  end.up
70
88
 
71
- assert_equal 1, MysqlDB.nextval(:position)
89
+ assert_equal 2, MysqlDB.nextval(:position)
72
90
  assert_equal 3, MysqlDB.nextval(:position)
91
+ assert_operator (2 + @step), :>, MysqlDB.nextval(:position)
73
92
  end
74
93
 
75
94
  test "returns current/last sequence value, which doesn't increase by itself" do
@@ -80,33 +99,70 @@ class MysqlSequenceTest < Minitest::Test
80
99
  end.up
81
100
 
82
101
  MysqlDB.nextval(:position)
102
+ # changed value (=2) after default one (=1)
83
103
 
84
- assert_equal 1, MysqlDB.currval(:position)
85
- assert_equal 1, MysqlDB.lastval(:position)
86
- assert_equal 1, MysqlDB.currval(:position)
87
- assert_equal 1, MysqlDB.lastval(:position)
104
+ assert_equal 2, MysqlDB.currval(:position)
105
+ assert_equal 2, MysqlDB.lastval(:position)
106
+ assert_equal 2, MysqlDB.currval(:position)
107
+ assert_equal 2, MysqlDB.lastval(:position)
88
108
  end
89
109
 
90
- test 'sets sequence value' do
110
+ test 'sets a new sequence value greater than the current one' do
91
111
  with_migration do
92
112
  def up
93
113
  create_sequence :position
94
114
  end
95
115
  end.up
96
116
 
97
- MysqlDB.nextval(:position)
98
117
  assert_equal MysqlDB.currval(:position), 1
99
118
 
119
+ MysqlDB.nextval(:position)
120
+ assert_equal MysqlDB.currval(:position), 2
121
+
100
122
  MysqlDB.setval(:position, 101)
101
- # in mariaDB, 'lastval' only works after 'nextval' rather than 'setval'
102
- assert_equal 1, MysqlDB.lastval(:position)
123
+ assert_equal 101, MysqlDB.lastval(:position)
124
+
125
+ assert_equal 102, MysqlDB.nextval(:position)
126
+ end
127
+
128
+ test 'sets a new sequence value less than the current one' do
129
+ with_migration do
130
+ def up
131
+ create_sequence :position, start: 100
132
+ end
133
+ end.up
134
+
135
+ assert_equal MysqlDB.currval(:position), 100
136
+
137
+ MysqlDB.nextval(:position)
138
+ assert_equal MysqlDB.currval(:position), 101
139
+
140
+ MysqlDB.setval(:position, 1)
141
+ assert_equal 101, MysqlDB.lastval(:position)
103
142
 
104
143
  MysqlDB.nextval(:position)
105
- # now the value is correct
106
144
  assert_equal 102, MysqlDB.lastval(:position)
107
145
  end
108
146
 
109
- test 'drops sequence and check_sequences' do
147
+ test 'sets a new sequence value with a label' do
148
+ with_migration do
149
+ def up
150
+ create_sequence :position
151
+ end
152
+ end.up
153
+
154
+ MysqlDB.nextval(:position)
155
+ MysqlDB.nextval_with_label(:position, 1)
156
+ MysqlDB.nextval_with_label(:position, 1)
157
+ fiction_set_size = MysqlDB.fetch('SELECT * FROM position where fiction = 1;').all.size
158
+ assert_equal 2, fiction_set_size
159
+
160
+ # create_sequence + nextval
161
+ fiction_set_size = MysqlDB.fetch('SELECT * FROM position where fiction = 0;').all.size
162
+ assert_equal 2, fiction_set_size
163
+ end
164
+
165
+ test 'drops the sequence and the check_sequences' do
110
166
  with_migration do
111
167
  def up
112
168
  create_sequence :position
@@ -114,7 +170,7 @@ class MysqlSequenceTest < Minitest::Test
114
170
  end.up
115
171
 
116
172
  sequence = MysqlDB.check_sequences.find_all do |seq|
117
- seq[:Tables_in_test] == 'position'
173
+ seq[:name] == 'position'
118
174
  end
119
175
 
120
176
  assert_equal 1, sequence.size
@@ -126,14 +182,40 @@ class MysqlSequenceTest < Minitest::Test
126
182
  end.down
127
183
 
128
184
  sequence = MysqlDB.check_sequences.find do |seq|
129
- seq[:Tables_in_test] == 'position'
185
+ seq[:name] == 'position'
186
+ end
187
+
188
+ assert_nil sequence
189
+ end
190
+
191
+ test 'drops the sequence with the parameter if_exists' do
192
+ with_migration do
193
+ def up
194
+ create_sequence :position
195
+ end
196
+ end.up
197
+
198
+ sequence = MysqlDB.check_sequences.find_all do |seq|
199
+ seq[:name] == 'position'
200
+ end
201
+
202
+ assert_equal 1, sequence.size
203
+
204
+ with_migration do
205
+ def down
206
+ drop_sequence :position, if_exists: true
207
+ end
208
+ end.down
209
+
210
+ sequence = MysqlDB.check_sequences.find do |seq|
211
+ seq[:name] == 'position'
130
212
  end
131
213
 
132
214
  assert_nil sequence
133
215
  end
134
216
 
135
217
  test 'orders sequences' do
136
- list = MysqlDB.check_sequences.map { |s| s[:Tables_in_test] }
218
+ list = MysqlDB.check_sequences.map { |s| s[:name] }
137
219
  assert !list.include?('a')
138
220
  assert !list.include?('b')
139
221
  assert !list.include?('c')
@@ -141,42 +223,149 @@ class MysqlSequenceTest < Minitest::Test
141
223
  with_migration do
142
224
  def up
143
225
  drop_table :things, if_exists: true
144
- create_sequence :c
145
- create_sequence :a
226
+ create_sequence :c, { start: 1 }
227
+ create_sequence :a, { start: 3 }
146
228
  create_sequence :b
147
229
  end
148
230
  end.up
149
231
 
150
- list = MysqlDB.check_sequences.map { |s| s[:Tables_in_test] }
232
+ list = MysqlDB.check_sequences.map { |s| s[:name] }
151
233
  assert list.include?('a')
152
234
  assert list.include?('b')
153
235
  assert list.include?('c')
154
236
  end
155
237
 
238
+ test 'checks custom sequence generated from code' do
239
+ assert_equal MysqlDB.custom_sequence?(:c), false
240
+
241
+ with_migration do
242
+ def up
243
+ create_sequence :c
244
+ end
245
+ end.up
246
+
247
+ assert_equal MysqlDB.custom_sequence?(:c), true
248
+ end
249
+
250
+ test 'recreates the same sequence with the same start value' do
251
+ with_migration do
252
+ def up
253
+ create_sequence :position_id, if_exists: false, start: 1
254
+ end
255
+ end.up
256
+
257
+ assert_equal 1, MysqlDB.currval(:position_id)
258
+
259
+ fiction_set_size = MysqlDB.fetch('SELECT * FROM position_id where fiction = 0;').all.size
260
+ assert_equal 1, fiction_set_size
261
+
262
+ with_migration do
263
+ def up
264
+ create_sequence :position_id, if_exists: false, start: 1
265
+ end
266
+ end.up
267
+
268
+ assert_equal 1, MysqlDB.currval(:position_id)
269
+
270
+ fiction_set_size = MysqlDB.fetch('SELECT * FROM position_id where fiction = 0;').all.size
271
+ assert_equal 1, fiction_set_size
272
+ end
273
+
274
+ test 'recreates the same sequence with a smaller start value' do
275
+ with_migration do
276
+ def up
277
+ create_sequence :position_id, if_exists: false, start: 100
278
+ end
279
+ end.up
280
+
281
+ assert_equal 100, MysqlDB.currval(:position_id)
282
+
283
+ fiction_set_size = MysqlDB.fetch('SELECT * FROM position_id where fiction = 0;').all.size
284
+ assert_equal 1, fiction_set_size
285
+
286
+ with_migration do
287
+ def up
288
+ create_sequence :position_id, if_exists: false, start: 1
289
+ end
290
+ end.up
291
+
292
+ assert_equal 100, MysqlDB.currval(:position_id)
293
+
294
+ fiction_set_size = MysqlDB.fetch('SELECT * FROM position_id where fiction = 0;').all.size
295
+ assert_equal 1, fiction_set_size
296
+ end
297
+
298
+ test 'recreates the same sequence with a greater start value' do
299
+ with_migration do
300
+ def up
301
+ create_sequence :position_id, if_exists: false, start: 1
302
+ end
303
+ end.up
304
+
305
+ assert_equal 1, MysqlDB.currval(:position_id)
306
+
307
+ fiction_set_size = MysqlDB.fetch('SELECT * FROM position_id where fiction = 0;').all.size
308
+ assert_equal 1, fiction_set_size
309
+
310
+ with_migration do
311
+ def up
312
+ create_sequence :position_id, if_exists: false, start: 100
313
+ end
314
+ end.up
315
+
316
+ assert_equal 100, MysqlDB.currval(:position_id)
317
+
318
+ fiction_set_size = MysqlDB.fetch('SELECT * FROM position_id where fiction = 0;').all.size
319
+ assert_equal 2, fiction_set_size
320
+ end
321
+
156
322
  test 'creates table that references sequence' do
157
323
  with_migration do
158
324
  def up
159
- drop_table :builders, if_exists: true
160
325
  create_sequence :position_id, if_exists: false, start: 1
161
- create_table :builders do
326
+ create_table :creators do
162
327
  primary_key :id
163
328
  String :name, text: true
164
- Bignum :position, null: false
329
+ Bignum :position
165
330
  end
166
- set_column_default_nextval :builders, :position, :position_id
331
+ set_column_default_nextval :creators, :position, :position_id
167
332
  end
168
333
  end.up
169
334
 
170
- class Builder < Sequel::Model; end
335
+ class Creator < Sequel::Model; end
171
336
 
172
- builder1 = Builder.create(name: 'Builder 1')
173
- pos1 = MysqlDB.currval(:position_id)
174
- assert_equal pos1, builder1.reload.position
337
+ creator1 = Creator.create(name: 'Creator 1')
338
+ pos1 = MysqlDB.lastval(:position_id)
339
+ assert_equal pos1, creator1.reload.position
175
340
 
176
- builder2 = Builder.create(name: 'Builder 2')
341
+ creator2 = Creator.create(name: 'Creator 2')
177
342
  pos2 = MysqlDB.currval(:position_id)
178
- assert_equal pos2, builder2.reload.position
343
+ assert_equal pos2, creator2.reload.position
179
344
 
180
345
  assert_equal pos2 - pos1, 1
346
+
347
+ MysqlDB.nextval(:position_id)
348
+
349
+ creator4 = Creator.create(name: 'Creator 4')
350
+ pos4 = MysqlDB.currval(:position_id)
351
+ assert_equal pos4, creator4.reload.position
352
+
353
+ assert_equal pos4 - pos2, 2
354
+ end
355
+
356
+ test "catches a Mysql2::Error: «Table mysql_sequence doesn't exist»" do
357
+ assert !sequence_table_exists?('position')
358
+
359
+ MysqlDB.drop_table :mysql_sequence, if_exists: true
360
+
361
+ last_number = MysqlDB.lastval(:position)
362
+ assert_nil last_number
363
+ end
364
+
365
+ test 'creates a Sequence by calling DB.setval(position, 1) if it still does not exist' do
366
+ assert !sequence_table_exists?('position')
367
+
368
+ MysqlDB.setval(:position, 100)
369
+ assert_equal 100, MysqlDB.currval(:position)
181
370
  end
182
371
  end
@@ -12,7 +12,7 @@ class SqliteSequenceTest < Minitest::Test
12
12
  test 'adds sequence with default values' do
13
13
  with_migration do
14
14
  def up
15
- # create_sequence :position, {start: 1, increment: 1} - default values
15
+ # create_sequence :position, {start: 1, increment: 1, numeric_label: 0} - default values
16
16
  create_sequence :position
17
17
  end
18
18
  end.up
@@ -126,8 +126,7 @@ class SqliteSequenceTest < Minitest::Test
126
126
  SQLiteDB.setval(:position, 1)
127
127
  assert_equal 101, SQLiteDB.lastval(:position)
128
128
 
129
- SQLiteDB.nextval(:position)
130
- assert_equal 102, SQLiteDB.lastval(:position)
129
+ assert_equal 102, SQLiteDB.nextval(:position)
131
130
  end
132
131
 
133
132
  test 'sets a new sequence value with a label' do
@@ -143,8 +142,9 @@ class SqliteSequenceTest < Minitest::Test
143
142
  fiction_set_size = SQLiteDB.fetch('SELECT * FROM position where fiction = 1;').all.size
144
143
  assert_equal 2, fiction_set_size
145
144
 
145
+ # create_sequence + nextval
146
146
  fiction_set_size = SQLiteDB.fetch('SELECT * FROM position where fiction = 0;').all.size
147
- assert_equal 1, fiction_set_size
147
+ assert_equal 2, fiction_set_size
148
148
  end
149
149
 
150
150
  test 'drops the sequence and the check_sequences' do
@@ -166,14 +166,12 @@ class SqliteSequenceTest < Minitest::Test
166
166
  end
167
167
  end.down
168
168
 
169
- sequence = SQLiteDB.check_sequences.find do |seq|
170
- seq[:name] == 'position'
171
- end
169
+ sequence = (list = SQLiteDB.check_sequences).empty? ? nil : list
172
170
 
173
171
  assert_nil sequence
174
172
  end
175
173
 
176
- test 'dropsthe sequence with the parameter if_exists' do
174
+ test 'drops the sequence with the parameter if_exists' do
177
175
  with_migration do
178
176
  def up
179
177
  create_sequence :position
@@ -192,9 +190,7 @@ class SqliteSequenceTest < Minitest::Test
192
190
  end
193
191
  end.down
194
192
 
195
- sequence = SQLiteDB.check_sequences.find do |seq|
196
- seq[:name] == 'position'
197
- end
193
+ sequence = (list = SQLiteDB.check_sequences).empty? ? nil : list
198
194
 
199
195
  assert_nil sequence
200
196
  end
@@ -220,10 +216,81 @@ class SqliteSequenceTest < Minitest::Test
220
216
  assert list.include?('c')
221
217
  end
222
218
 
219
+ test 'recreates the same sequence with the same start value' do
220
+ with_migration do
221
+ def up
222
+ create_sequence :position_id, if_exists: false, start: 1
223
+ end
224
+ end.up
225
+
226
+ assert_equal 1, SQLiteDB.currval(:position_id)
227
+
228
+ fiction_set_size = SQLiteDB.fetch('SELECT * FROM position_id where fiction = 0;').all.size
229
+ assert_equal 1, fiction_set_size
230
+
231
+ with_migration do
232
+ def up
233
+ create_sequence :position_id, if_exists: false, start: 1
234
+ end
235
+ end.up
236
+
237
+ assert_equal 1, SQLiteDB.currval(:position_id)
238
+
239
+ fiction_set_size = SQLiteDB.fetch('SELECT * FROM position_id where fiction = 0;').all.size
240
+ assert_equal 1, fiction_set_size
241
+ end
242
+
243
+ test 'recreates the same sequence with a smaller start value' do
244
+ with_migration do
245
+ def up
246
+ create_sequence :position_id, if_exists: false, start: 100
247
+ end
248
+ end.up
249
+
250
+ assert_equal 100, SQLiteDB.currval(:position_id)
251
+
252
+ fiction_set_size = SQLiteDB.fetch('SELECT * FROM position_id where fiction = 0;').all.size
253
+ assert_equal 1, fiction_set_size
254
+
255
+ with_migration do
256
+ def up
257
+ create_sequence :position_id, if_exists: false, start: 1
258
+ end
259
+ end.up
260
+
261
+ assert_equal 100, SQLiteDB.currval(:position_id)
262
+
263
+ fiction_set_size = SQLiteDB.fetch('SELECT * FROM position_id where fiction = 0;').all.size
264
+ assert_equal 1, fiction_set_size
265
+ end
266
+
267
+ test 'recreates the same sequence with a greater start value' do
268
+ with_migration do
269
+ def up
270
+ create_sequence :position_id, if_exists: false, start: 1
271
+ end
272
+ end.up
273
+
274
+ assert_equal 1, SQLiteDB.currval(:position_id)
275
+
276
+ fiction_set_size = SQLiteDB.fetch('SELECT * FROM position_id where fiction = 0;').all.size
277
+ assert_equal 1, fiction_set_size
278
+
279
+ with_migration do
280
+ def up
281
+ create_sequence :position_id, if_exists: false, start: 100
282
+ end
283
+ end.up
284
+
285
+ assert_equal 100, SQLiteDB.currval(:position_id)
286
+
287
+ fiction_set_size = SQLiteDB.fetch('SELECT * FROM position_id where fiction = 0;').all.size
288
+ assert_equal 2, fiction_set_size
289
+ end
290
+
223
291
  test 'creates table that references sequence' do
224
292
  with_migration do
225
293
  def up
226
- drop_table :apprentices, if_exists: true
227
294
  create_sequence :position_id, if_exists: false, start: 1
228
295
  create_table :apprentices do
229
296
  primary_key :id
@@ -254,4 +321,11 @@ class SqliteSequenceTest < Minitest::Test
254
321
 
255
322
  assert_equal pos4 - pos2, 2
256
323
  end
324
+
325
+ test 'creates a Sequence by calling DB.setval(position, 1) if it still does not exist' do
326
+ assert !sequence_table_exists?('position')
327
+
328
+ SQLiteDB.setval(:position, 100)
329
+ assert_equal 100, SQLiteDB.currval(:position)
330
+ end
257
331
  end
@@ -10,8 +10,10 @@ SQLiteDB = Sequel.connect(
10
10
 
11
11
  module SqliteTestHelper
12
12
  def recreate_table
13
- SQLiteDB.drop_sequence 'position'
14
- SQLiteDB.run 'DROP TABLE IF EXISTS objects'
13
+ SQLiteDB.drop_table :apprentices, if_exists: true
14
+ SQLiteDB.drop_sequence :position
15
+ SQLiteDB.drop_sequence :position_id, if_exists: true
16
+ SQLiteDB.drop_table :objects, if_exists: true
15
17
  SQLiteDB.drop_sequence 'a'
16
18
  SQLiteDB.drop_sequence 'b'
17
19
  SQLiteDB.drop_sequence 'c'
@@ -26,4 +28,10 @@ module SqliteTestHelper
26
28
 
27
29
  Class.new(migration_class, &block).new(SQLiteDB)
28
30
  end
31
+
32
+ def sequence_table_exists?(name)
33
+ sql = "SELECT name FROM sqlite_schema WHERE type ='table' AND name NOT LIKE 'sqlite_%';"
34
+ table_list = SQLiteDB.fetch(sql).all.map { |_key, value| value }
35
+ table_list.include?(name)
36
+ end
29
37
  end
data/test/test_helper.rb CHANGED
@@ -1,6 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  require 'simplecov'
4
+
4
5
  SimpleCov.start
5
6
 
6
7
  require 'bundler/setup'