Skip to content
This repository was archived by the owner on Oct 26, 2022. It is now read-only.

Commit cf6dd67

Browse files
committed
Add specs for Sequel connection case
1 parent 5a6fa5a commit cf6dd67

File tree

2 files changed

+39
-0
lines changed

2 files changed

+39
-0
lines changed

spec/features/connections_spec.rb

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,17 @@ def execute(query, context = {})
55
end
66

77
RSpec.describe 'caching connection fields' do
8+
class StubLogger < Logger
9+
def initialize
10+
@strio = StringIO.new
11+
super(@strio)
12+
end
13+
14+
def messages
15+
@strio.string
16+
end
17+
end
18+
819
let(:query) do
920
%Q{
1021
{
@@ -21,10 +32,34 @@ def execute(query, context = {})
2132
}
2233
end
2334

35+
let(:sql_logger) do
36+
StubLogger.new.tap do |logger|
37+
logger.formatter = proc do |_severity, _datetime, _progname, msg|
38+
raw_sql = msg.match(/\(.*\)\s(?<sql>.*)/)["sql"]
39+
40+
"#{raw_sql}\n"
41+
end
42+
end
43+
end
44+
45+
before { DB.logger = sql_logger }
46+
2447
it 'produces the same result on miss or hit' do
2548
cold_results = execute(query)
2649
warm_results = execute(query)
2750

2851
expect(cold_results).to eq warm_results
2952
end
53+
54+
it 'calls sql engine only one time per cached field' do
55+
5.times { execute(query) }
56+
57+
expect(sql_logger.messages).to eq(
58+
<<~SQL
59+
SELECT * FROM `customers` ORDER BY `id` DESC LIMIT 1
60+
SELECT * FROM `customers` WHERE `id` = '1'
61+
SELECT * FROM `orders` WHERE (`orders`.`customer_id` = 1)
62+
SQL
63+
)
64+
end
3065
end

spec/spec_helper.rb

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,10 @@
2929
DB.logger = GraphQL::Cache.logger
3030
end
3131

32+
config.before(:each) do
33+
GraphQL::Cache.cache.clear
34+
end
35+
3236
# required after GraphQL::Cache initialization because dev
3337
# schema uses cache and logger objects from it.
3438
require_relative '../test_schema'

0 commit comments

Comments
 (0)