Skip to content

Commit f971f36

Browse files
committed
Backport the cast_booleans test structure to results spec
1 parent b6cbf17 commit f971f36

File tree

2 files changed

+38
-31
lines changed

2 files changed

+38
-31
lines changed

spec/mysql2/result_spec.rb

Lines changed: 37 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -208,36 +208,43 @@
208208
expect(@test_result['tiny_int_test']).to eql(1)
209209
end
210210

211-
it "should return TrueClass or FalseClass for a TINYINT value if :cast_booleans is enabled" do
212-
@client.query 'INSERT INTO mysql2_test (bool_cast_test) VALUES (1)'
213-
id1 = @client.last_id
214-
@client.query 'INSERT INTO mysql2_test (bool_cast_test) VALUES (0)'
215-
id2 = @client.last_id
216-
@client.query 'INSERT INTO mysql2_test (bool_cast_test) VALUES (-1)'
217-
id3 = @client.last_id
218-
219-
result1 = @client.query 'SELECT bool_cast_test FROM mysql2_test WHERE bool_cast_test = 1 LIMIT 1', :cast_booleans => true
220-
result2 = @client.query 'SELECT bool_cast_test FROM mysql2_test WHERE bool_cast_test = 0 LIMIT 1', :cast_booleans => true
221-
result3 = @client.query 'SELECT bool_cast_test FROM mysql2_test WHERE bool_cast_test = -1 LIMIT 1', :cast_booleans => true
222-
expect(result1.first['bool_cast_test']).to be true
223-
expect(result2.first['bool_cast_test']).to be false
224-
expect(result3.first['bool_cast_test']).to be true
225-
226-
@client.query "DELETE from mysql2_test WHERE id IN(#{id1},#{id2},#{id3})"
227-
end
228-
229-
it "should return TrueClass or FalseClass for a BIT(1) value if :cast_booleans is enabled" do
230-
@client.query 'INSERT INTO mysql2_test (single_bit_test) VALUES (1)'
231-
id1 = @client.last_id
232-
@client.query 'INSERT INTO mysql2_test (single_bit_test) VALUES (0)'
233-
id2 = @client.last_id
234-
235-
result1 = @client.query "SELECT single_bit_test FROM mysql2_test WHERE id = #{id1}", :cast_booleans => true
236-
result2 = @client.query "SELECT single_bit_test FROM mysql2_test WHERE id = #{id2}", :cast_booleans => true
237-
expect(result1.first['single_bit_test']).to be true
238-
expect(result2.first['single_bit_test']).to be false
239-
240-
@client.query "DELETE from mysql2_test WHERE id IN(#{id1},#{id2})"
211+
context "cast booleans for TINYINT if :cast_booleans is enabled" do
212+
# rubocop:disable Style/Semicolon
213+
let(:id1) { @client.query 'INSERT INTO mysql2_test (bool_cast_test) VALUES ( 1)'; @client.last_id }
214+
let(:id2) { @client.query 'INSERT INTO mysql2_test (bool_cast_test) VALUES ( 0)'; @client.last_id }
215+
let(:id3) { @client.query 'INSERT INTO mysql2_test (bool_cast_test) VALUES (-1)'; @client.last_id }
216+
# rubocop:enable Style/Semicolon
217+
218+
after do
219+
@client.query "DELETE from mysql2_test WHERE id IN(#{id1},#{id2},#{id3})"
220+
end
221+
222+
it "should return TrueClass or FalseClass for a TINYINT value if :cast_booleans is enabled" do
223+
result1 = @client.query "SELECT bool_cast_test FROM mysql2_test WHERE id = #{id1} LIMIT 1", :cast_booleans => true
224+
result2 = @client.query "SELECT bool_cast_test FROM mysql2_test WHERE id = #{id2} LIMIT 1", :cast_booleans => true
225+
result3 = @client.query "SELECT bool_cast_test FROM mysql2_test WHERE id = #{id3} LIMIT 1", :cast_booleans => true
226+
expect(result1.first['bool_cast_test']).to be true
227+
expect(result2.first['bool_cast_test']).to be false
228+
expect(result3.first['bool_cast_test']).to be true
229+
end
230+
end
231+
232+
context "cast booleans for BIT(1) if :cast_booleans is enabled" do
233+
# rubocop:disable Style/Semicolon
234+
let(:id1) { @client.query 'INSERT INTO mysql2_test (single_bit_test) VALUES (1)'; @client.last_id }
235+
let(:id2) { @client.query 'INSERT INTO mysql2_test (single_bit_test) VALUES (0)'; @client.last_id }
236+
# rubocop:enable Style/Semicolon
237+
238+
after do
239+
@client.query "DELETE from mysql2_test WHERE id IN(#{id1},#{id2})"
240+
end
241+
242+
it "should return TrueClass or FalseClass for a BIT(1) value if :cast_booleans is enabled" do
243+
result1 = @client.query "SELECT single_bit_test FROM mysql2_test WHERE id = #{id1}", :cast_booleans => true
244+
result2 = @client.query "SELECT single_bit_test FROM mysql2_test WHERE id = #{id2}", :cast_booleans => true
245+
expect(result1.first['single_bit_test']).to be true
246+
expect(result2.first['single_bit_test']).to be false
247+
end
241248
end
242249

243250
it "should return Fixnum for a SMALLINT value" do

spec/mysql2/statement_spec.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -374,7 +374,7 @@ def stmt_count
374374
expect(@test_result['tiny_int_test']).to eql(1)
375375
end
376376

377-
context "cast booleans for TINYINY if :cast_booleans is enabled" do
377+
context "cast booleans for TINYINT if :cast_booleans is enabled" do
378378
# rubocop:disable Style/Semicolon
379379
let(:client) { new_client(:cast_booleans => true) }
380380
let(:id1) { client.query 'INSERT INTO mysql2_test (bool_cast_test) VALUES ( 1)'; client.last_id }

0 commit comments

Comments
 (0)