Skip to content

Commit 0071bb0

Browse files
authored
Merge pull request #4795 from rubendinho/patch-3
Fix typos in DataLoader testing doc + add source example
2 parents 805b6b2 + 9bdfebb commit 0071bb0

File tree

1 file changed

+22
-7
lines changed

1 file changed

+22
-7
lines changed

guides/dataloader/testing.md

Lines changed: 22 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,22 @@ You could also make specific assertions on the queries that are run (see the [`s
4343

4444
## Testing Dataloader Sources
4545

46-
You can also test `Dataloader` behavior outside of GraphQL using {{ "GraphQL::Dataloader.with_dataloading" | api_doc }}. For example:
46+
You can also test `Dataloader` behavior outside of GraphQL using {{ "GraphQL::Dataloader.with_dataloading" | api_doc }}. For example, let's if you have a `Sources::ActiveRecord` source defined like so:
47+
48+
```ruby
49+
50+
module Sources
51+
class User < GraphQL::Dataloader::Source
52+
def fetch(ids)
53+
records = User.where(id: ids)
54+
# return a list with `nil` for any ID that wasn't found, so the shape matches
55+
ids.map { |id| records.find { |r| r.id == id.to_i } }
56+
end
57+
end
58+
end
59+
```
60+
61+
You can test it like so:
4762

4863
```ruby
4964
def test_it_fetches_objects_by_id
@@ -55,15 +70,15 @@ def test_it_fetches_objects_by_id
5570
ActiveSupport::Notifications.subscribed(callback, "sql.active_record") do
5671
GraphQL::Dataloader.with_dataloading do |dataloader|
5772
req1 = dataloader.with(Sources::ActiveRecord).request(user_1.id)
58-
req2 = dataloader.with(Sources::ActiveRecord).request(user_3.id)
59-
req3 = dataloader.with(Sources::ActiveRecord).request(user_2.id)
73+
req2 = dataloader.with(Sources::ActiveRecord).request(user_2.id)
74+
req3 = dataloader.with(Sources::ActiveRecord).request(user_3.id)
6075
req4 = dataloader.with(Sources::ActiveRecord).request(-1)
6176

6277
# Validate source's matching up of records
63-
expect(req1.load).to eq(user_1)
64-
expect(req2.load).to eq(user_3)
65-
expect(req3.load).to eq(user_2)
66-
expect(req4.load).to be_nil
78+
expect(req1).to eq(user_1)
79+
expect(req2).to eq(user_2)
80+
expect(req3).to eq(user_3)
81+
expect(req4).to be_nil
6782
end
6883
end
6984

0 commit comments

Comments
 (0)