From 9c9add99134d9111228056ea6116d276aac573cd Mon Sep 17 00:00:00 2001 From: Tom Picton Date: Thu, 12 Mar 2020 16:59:58 -0700 Subject: [PATCH] Add test coverage for optimization of Relay nodes --- tests/test_query.py | 39 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 39 insertions(+) diff --git a/tests/test_query.py b/tests/test_query.py index 8a7ca07..fb51b97 100644 --- a/tests/test_query.py +++ b/tests/test_query.py @@ -520,3 +520,42 @@ def test_should_only_use_the_only_and_not_select_related(): items = gql_optimizer.query(qs, info) optimized_items = qs.only('id', 'name') assert_query_equality(items, optimized_items) + + +@pytest.mark.django_db +def test_should_use_only_with_node_interface(): + info = create_resolve_info(schema, ''' + query { + relayItems { + edges { + node { + id + } + } + } + } + ''') + qs = Item.objects.all() + items = gql_optimizer.query(qs, info) + optimized_items = qs.only('id') + assert_query_equality(items, optimized_items) + + +@pytest.mark.django_db +def test_should_not_try_to_optimize_non_field_model_fields_on_relay_node(): + info = create_resolve_info(schema, ''' + query { + relayItems { + edges { + node { + id + foo + } + } + } + } + ''') + qs = Item.objects.all() + items = gql_optimizer.query(qs, info) + optimized_items = qs + assert_query_equality(items, optimized_items)