@@ -207,6 +207,60 @@ class Query(graphene.ObjectType):
207
207
assert_and_raise_result (result , expected )
208
208
209
209
210
+ # Test filtering on enums
211
+ @pytest .mark .asyncio
212
+ async def test_filter_enum (session ):
213
+ await add_test_data (session )
214
+
215
+ Query = create_schema (session )
216
+
217
+ # test sqlalchemy enum
218
+ query = """
219
+ query {
220
+ reporters (filter: {
221
+ favoritePetKind: {eq: "dog"}
222
+ }
223
+ ) {
224
+ edges {
225
+ node {
226
+ firstName
227
+ lastName
228
+ }
229
+ }
230
+ }
231
+ }
232
+ """
233
+ expected = {
234
+ "pets" : {"edges" : [{"node" : {"firstName" : "Jane" , "lastName" : "Roe" }}]},
235
+ }
236
+ schema = graphene .Schema (query = Query )
237
+ result = await schema .execute_async (query , context_value = {"session" : session })
238
+ assert_and_raise_result (result , expected )
239
+
240
+ # test Python enum and sqlalchemy enum
241
+ query = """
242
+ query {
243
+ pets (filter: {
244
+ and: [
245
+ { hairKind: {eq: LONG} },
246
+ { petKind: {eq: "dog"} }
247
+ ]}) {
248
+ edges {
249
+ node {
250
+ name
251
+ }
252
+ }
253
+ }
254
+ }
255
+ """
256
+ expected = {
257
+ "pets" : {"edges" : [{"node" : {"name" : "Lassie" }}]},
258
+ }
259
+ schema = graphene .Schema (query = Query )
260
+ result = await schema .execute_async (query , context_value = {"session" : session })
261
+ assert_and_raise_result (result , expected )
262
+
263
+
210
264
# Test a 1:1 relationship
211
265
@pytest .mark .asyncio
212
266
async def test_filter_relationship_one_to_one (session ):
@@ -443,7 +497,7 @@ async def test_filter_relationship_many_to_many_contains_with_and(session):
443
497
{ name: { in: ["sensational", "eye-grabbing"] } },
444
498
{ name: { eq: "eye-grabbing" } },
445
499
]
446
-
500
+
447
501
}
448
502
]
449
503
}
@@ -788,8 +842,7 @@ async def test_filter_logic_and(session):
788
842
reporters (filter: {
789
843
and: [
790
844
{ firstName: { eq: "John" } },
791
- # TODO get enums working for filters
792
- # { favoritePetKind: { eq: "cat" } },
845
+ { favoritePetKind: { eq: "cat" } },
793
846
]
794
847
}) {
795
848
edges {
@@ -821,8 +874,7 @@ async def test_filter_logic_or(session):
821
874
reporters (filter: {
822
875
or: [
823
876
{ lastName: { eq: "Woe" } },
824
- # TODO get enums working for filters
825
- #{ favoritePetKind: { eq: "dog" } },
877
+ { favoritePetKind: { eq: "dog" } },
826
878
]
827
879
}) {
828
880
edges {
@@ -838,7 +890,6 @@ async def test_filter_logic_or(session):
838
890
"reporters" : {
839
891
"edges" : [
840
892
{"node" : {"firstName" : "John" , "lastName" : "Woe" }},
841
- # TODO get enums working for filters
842
893
# {"node": {"firstName": "Jane", "lastName": "Roe"}},
843
894
]
844
895
}
0 commit comments