Skip to content

Commit 9b0ed7f

Browse files
author
Victor
committed
added some tests
1 parent 47cd7e9 commit 9b0ed7f

File tree

2 files changed

+86
-2
lines changed

2 files changed

+86
-2
lines changed

graphene_mongo/fields.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -111,11 +111,11 @@ def get_query(cls, model, info, **args):
111111

112112
# https://github.com/graphql-python/graphene-mongo/issues/21
113113
if after is not None:
114-
_after = from_global_id(after)[-1]
114+
_after = int(from_global_id(after)[-1])
115115
objs = objs[_after:]
116116

117117
if before is not None:
118-
_before = from_global_id(before)[-1]
118+
_before = int(from_global_id(before)[-1])
119119
objs = objs[:_before]
120120

121121
if first is not None:

graphene_mongo/tests/test_relay_query.py

Lines changed: 84 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -364,6 +364,89 @@ class Query(graphene.ObjectType):
364364
assert all(item in get_nodes(result.data, 'editors') for item in get_nodes(expected, 'editors'))
365365

366366

367+
def test_should_after():
368+
class Query(graphene.ObjectType):
369+
370+
players = MongoengineConnectionField(PlayerNode)
371+
372+
query = '''
373+
query EditorQuery {
374+
players(after: "YXJyYXljb25uZWN0aW9uOjA=") {
375+
edges {
376+
cursor,
377+
node {
378+
firstName
379+
}
380+
}
381+
}
382+
}
383+
'''
384+
expected = {
385+
'players': {
386+
'edges': [
387+
{
388+
'cursor': 'YXJyYXljb25uZWN0aW9uOjE=',
389+
'node': {
390+
'firstName': 'Magic',
391+
}
392+
},
393+
{
394+
'cursor': 'YXJyYXljb25uZWN0aW9uOjI=',
395+
'node': {
396+
'firstName': 'Larry'
397+
}
398+
}
399+
]
400+
}
401+
}
402+
schema = graphene.Schema(query=Query)
403+
result = schema.execute(query)
404+
405+
assert not result.errors
406+
assert json.dumps(result.data, sort_keys=True) == json.dumps(expected, sort_keys=True)
407+
408+
409+
def test_should_before():
410+
class Query(graphene.ObjectType):
411+
412+
players = MongoengineConnectionField(PlayerNode)
413+
414+
query = '''
415+
query EditorQuery {
416+
players(before: "YXJyYXljb25uZWN0aW9uOjI=") {
417+
edges {
418+
cursor,
419+
node {
420+
firstName
421+
}
422+
}
423+
}
424+
}
425+
'''
426+
expected = {
427+
'players': {
428+
'edges': [
429+
{
430+
'cursor': "YXJyYXljb25uZWN0aW9uOjA=",
431+
'node': {
432+
'firstName': 'Michael',
433+
}
434+
},
435+
{
436+
'cursor': 'YXJyYXljb25uZWN0aW9uOjE=',
437+
'node': {
438+
'firstName': 'Magic',
439+
}
440+
}
441+
]
442+
}
443+
}
444+
schema = graphene.Schema(query=Query)
445+
result = schema.execute(query)
446+
447+
assert not result.errors
448+
assert json.dumps(result.data, sort_keys=True) == json.dumps(expected, sort_keys=True)
449+
367450
def test_should_self_reference():
368451

369452
class Query(graphene.ObjectType):
@@ -463,6 +546,7 @@ class Query(graphene.ObjectType):
463546
assert not result.errors
464547
assert json.dumps(result.data, sort_keys=True) == json.dumps(expected, sort_keys=True)
465548

549+
466550
# TODO:
467551
def test_should_paging():
468552
pass

0 commit comments

Comments
 (0)