1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56
|
import pytest
from tests.utils import assert_num_queries
from .models import ArtProject, ResearchProject
from .schema import schema
@pytest.mark.django_db(transaction=True)
def test_polymorphic_interface_query():
ap = ArtProject.objects.create(topic="Art", artist="Artist")
rp = ResearchProject.objects.create(topic="Research", supervisor="Supervisor")
query = """\
query {
projects {
edges {
node {
__typename
topic
... on ArtProjectType {
artist
}
... on ResearchProjectType {
supervisor
}
}
}
}
}
"""
# ContentType, base table, two subtables = 4 queries
with assert_num_queries(4):
result = schema.execute_sync(query)
assert not result.errors
assert result.data == {
"projects": {
"edges": [
{
"node": {
"__typename": "ArtProjectType",
"topic": ap.topic,
"artist": ap.artist,
}
},
{
"node": {
"__typename": "ResearchProjectType",
"topic": rp.topic,
"supervisor": rp.supervisor,
}
},
]
}
}
|