Skip to content

Commit 8bbcf89

Browse files
committed
Add test support for PostgreSQL rails <5
1 parent 03831f4 commit 8bbcf89

File tree

2 files changed

+44
-9
lines changed

2 files changed

+44
-9
lines changed

test/bulk_insert/worker_test.rb

+17-3
Original file line numberDiff line numberDiff line change
@@ -371,7 +371,12 @@ class BulkInsertWorkerTest < ActiveSupport::TestCase
371371
pgsql_worker.add ["Yo", 15, false, nil, nil]
372372

373373
assert_statement_adapter pgsql_worker, 'BulkInsert::StatementAdapters::PostgreSQLAdapter'
374-
assert_equal pgsql_worker.compose_insert_query, "INSERT INTO \"testings\" (\"greeting\",\"age\",\"happy\",\"created_at\",\"updated_at\",\"color\") VALUES ('Yo',15,FALSE,NULL,NULL,'chartreuse') ON CONFLICT DO NOTHING RETURNING id"
374+
375+
if ActiveRecord::VERSION::STRING >= "5.0.0"
376+
assert_equal pgsql_worker.compose_insert_query, "INSERT INTO \"testings\" (\"greeting\",\"age\",\"happy\",\"created_at\",\"updated_at\",\"color\") VALUES ('Yo',15,FALSE,NULL,NULL,'chartreuse') ON CONFLICT DO NOTHING RETURNING id"
377+
else
378+
assert_equal pgsql_worker.compose_insert_query, "INSERT INTO \"testings\" (\"greeting\",\"age\",\"happy\",\"created_at\",\"updated_at\",\"color\") VALUES ('Yo',15,'f',NULL,NULL,'chartreuse') ON CONFLICT DO NOTHING RETURNING id"
379+
end
375380
end
376381
end
377382

@@ -392,7 +397,11 @@ class BulkInsertWorkerTest < ActiveSupport::TestCase
392397
pgsql_worker.add ["Yo", 15, false, nil, nil]
393398

394399
assert_statement_adapter pgsql_worker, 'BulkInsert::StatementAdapters::PostgreSQLAdapter'
395-
assert_equal pgsql_worker.compose_insert_query, "INSERT INTO \"testings\" (\"greeting\",\"age\",\"happy\",\"created_at\",\"updated_at\",\"color\") VALUES ('Yo',15,FALSE,NULL,NULL,'chartreuse') RETURNING id"
400+
if ActiveRecord::VERSION::STRING >= "5.0.0"
401+
assert_equal pgsql_worker.compose_insert_query, "INSERT INTO \"testings\" (\"greeting\",\"age\",\"happy\",\"created_at\",\"updated_at\",\"color\") VALUES ('Yo',15,FALSE,NULL,NULL,'chartreuse') RETURNING id"
402+
else
403+
assert_equal pgsql_worker.compose_insert_query, "INSERT INTO \"testings\" (\"greeting\",\"age\",\"happy\",\"created_at\",\"updated_at\",\"color\") VALUES ('Yo',15,'f',NULL,NULL,'chartreuse') RETURNING id"
404+
end
396405
end
397406
end
398407

@@ -412,7 +421,12 @@ class BulkInsertWorkerTest < ActiveSupport::TestCase
412421
pgsql_worker.add ["Yo", 15, false, nil, nil]
413422

414423
assert_statement_adapter pgsql_worker, 'BulkInsert::StatementAdapters::PostgreSQLAdapter'
415-
assert_equal pgsql_worker.compose_insert_query, "INSERT INTO \"testings\" (\"greeting\",\"age\",\"happy\",\"created_at\",\"updated_at\",\"color\") VALUES ('Yo',15,FALSE,NULL,NULL,'chartreuse') ON CONFLICT(greeting, age, happy) DO UPDATE SET greeting=EXCLUDED.greeting, age=EXCLUDED.age, happy=EXCLUDED.happy, created_at=EXCLUDED.created_at, updated_at=EXCLUDED.updated_at, color=EXCLUDED.color RETURNING id"
424+
425+
if ActiveRecord::VERSION::STRING >= "5.0.0"
426+
assert_equal pgsql_worker.compose_insert_query, "INSERT INTO \"testings\" (\"greeting\",\"age\",\"happy\",\"created_at\",\"updated_at\",\"color\") VALUES ('Yo',15,FALSE,NULL,NULL,'chartreuse') ON CONFLICT(greeting, age, happy) DO UPDATE SET greeting=EXCLUDED.greeting, age=EXCLUDED.age, happy=EXCLUDED.happy, created_at=EXCLUDED.created_at, updated_at=EXCLUDED.updated_at, color=EXCLUDED.color RETURNING id"
427+
else
428+
assert_equal pgsql_worker.compose_insert_query, "INSERT INTO \"testings\" (\"greeting\",\"age\",\"happy\",\"created_at\",\"updated_at\",\"color\") VALUES ('Yo',15,'f',NULL,NULL,'chartreuse') ON CONFLICT(greeting, age, happy) DO UPDATE SET greeting=EXCLUDED.greeting, age=EXCLUDED.age, happy=EXCLUDED.happy, created_at=EXCLUDED.created_at, updated_at=EXCLUDED.updated_at, color=EXCLUDED.color RETURNING id"
429+
end
416430
end
417431
end
418432

test/connection_mocks.rb

+27-6
Original file line numberDiff line numberDiff line change
@@ -1,15 +1,15 @@
11
module ConnectionMocks
2-
DOUBLE_QUOTE_PROC = Proc.new do |value, *_column|
2+
DOUBLE_QUOTE_PROC = Proc.new do |value, *_column|
33
return value unless value.is_a? String
44
"\"#{value}\""
55
end
66

7-
BACKTICK_QUOTE_PROC = Proc.new do |value, *_column|
7+
BACKTICK_QUOTE_PROC = Proc.new do |value, *_column|
88
return value unless value.is_a? String
99
'`' + value + '`'
1010
end
1111

12-
BOOLEAN_VALUE_QUOTE_PROC = Proc.new do |value, *_column|
12+
BOOLEAN_VALUE_QUOTE_PROC = Proc.new do |value, *_column|
1313
case value
1414
when String
1515
"'" + value + "'"
@@ -24,7 +24,22 @@ module ConnectionMocks
2424
end
2525
end
2626

27-
DEFAULT_VALUE_QUOTE_PROC = Proc.new do |value, *_column|
27+
LITERAL_BOOLEAN_VALUE_QUOTE_PROC = Proc.new do |value, *_column|
28+
case value
29+
when String
30+
"'" + value + "'"
31+
when TrueClass
32+
"'t'"
33+
when FalseClass
34+
"'f'"
35+
when NilClass
36+
'NULL'
37+
else
38+
value
39+
end
40+
end
41+
42+
DEFAULT_VALUE_QUOTE_PROC = Proc.new do |value, *_column|
2843
case value
2944
when String
3045
"'" + value + "'"
@@ -110,8 +125,14 @@ def mock_mysql_connection(connection, adapter_name)
110125
def mock_postgresql_connection(connection, adapter_name)
111126
connection.stub :quote_table_name, DOUBLE_QUOTE_PROC do
112127
connection.stub :quote_column_name, DOUBLE_QUOTE_PROC do
113-
connection.stub :quote, BOOLEAN_VALUE_QUOTE_PROC do
114-
yield
128+
if ActiveRecord::VERSION::STRING >= "5.0.0"
129+
connection.stub :quote, BOOLEAN_VALUE_QUOTE_PROC do
130+
yield
131+
end
132+
else
133+
connection.stub :quote, LITERAL_BOOLEAN_VALUE_QUOTE_PROC do
134+
yield
135+
end
115136
end
116137
end
117138
end

0 commit comments

Comments
 (0)