Skip to content

Commit bbce6ea

Browse files
committed
InMemoryDataSource should index by stringified IDs.
1 parent 97b0ac0 commit bbce6ea

File tree

2 files changed

+11
-10
lines changed

2 files changed

+11
-10
lines changed

epoxy/contrib/relay/data_source/memory.py

+3-2
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
from collections import defaultdict
22
from operator import attrgetter
3+
from six import text_type
34

45
from ..connections.sorted_collection import SortedCollection
56
from .base import BaseDataSource
@@ -11,11 +12,11 @@ def __init__(self):
1112
self.objects_by_type = defaultdict(lambda: SortedCollection(key=attrgetter('id')))
1213

1314
def add(self, obj):
14-
self.objects_by_type_and_id[obj.T][obj.id] = obj
15+
self.objects_by_type_and_id[obj.T][text_type(obj.id)] = obj
1516
self.objects_by_type[obj.T].insert(obj)
1617

1718
def fetch_node(self, object_type, id, resolve_info):
18-
return self.objects_by_type_and_id[object_type].get(id)
19+
return self.objects_by_type_and_id[object_type].get(text_type(id))
1920

2021
def make_connection_resolver(self, relay, object_type_thunk):
2122
def resolver(obj, args, info):

tests/test_relay/test_relay_node.py

+8-8
Original file line numberDiff line numberDiff line change
@@ -18,11 +18,11 @@ class Query(R.ObjectType):
1818
schema = R.Schema(R.Query)
1919

2020
pets = {
21-
'5': Pet(id='5', name='Garfield'),
22-
'6': Pet(id='6', name='Odis')
21+
5: Pet(id=5, name='Garfield'),
22+
6: Pet(id=6, name='Odis')
2323
}
2424

25-
data = Query(pets=[pets['5'], pets['6']])
25+
data = Query(pets=[pets[5], pets[6]])
2626
result = graphql(schema, '{ pets { id, name } }', data)
2727
assert result.data == {'pets': [{'id': 'UGV0OjU=', 'name': 'Garfield'}, {'id': 'UGV0OjY=', 'name': 'Odis'}]}
2828
assert not result.errors
@@ -48,11 +48,11 @@ def __init__(self, id, name):
4848
self.name = name
4949

5050
pets = {
51-
'5': MyPet(id='5', name='Garfield'),
52-
'6': MyPet(id='6', name='Odis')
51+
5: MyPet(id=5, name='Garfield'),
52+
6: MyPet(id=6, name='Odis')
5353
}
5454

55-
data = Query(pets=[pets['5'], pets['6']])
55+
data = Query(pets=[pets[5], pets[6]])
5656
result = graphql(schema, '{ pets { id, name } }', data)
5757
assert result.data == {'pets': [{'id': 'UGV0OjU=', 'name': 'Garfield'}, {'id': 'UGV0OjY=', 'name': 'Odis'}]}
5858
assert not result.errors
@@ -73,8 +73,8 @@ class Query(R.ObjectType):
7373

7474
schema = R.Schema(R.Query)
7575

76-
data_source.add(Pet(id='5', name='Garfield'))
77-
data_source.add(Pet(id='6', name='Odis'))
76+
data_source.add(Pet(id=5, name='Garfield'))
77+
data_source.add(Pet(id=6, name='Odis'))
7878

7979
result = graphql(schema, '''
8080
{

0 commit comments

Comments
 (0)