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 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99
|
import textwrap
import strawberry
from asgiref.sync import sync_to_async
import strawberry_django
from tests import models
def test_model_property(transactional_db):
@strawberry_django.type(models.Fruit)
class Fruit:
name: strawberry.auto
name_length: strawberry.auto
@strawberry.type
class Query:
fruit: Fruit = strawberry_django.field()
schema = strawberry.Schema(query=Query)
assert (
textwrap.dedent(str(schema))
== textwrap.dedent(
"""\
type Fruit {
name: String!
nameLength: Int!
}
type Query {
fruit(pk: ID!): Fruit!
}
""",
).strip()
)
fruit1 = models.Fruit.objects.create(name="Banana")
fruit2 = models.Fruit.objects.create(name="Apple")
query = """
query Fruit($pk: ID!) {
fruit(pk: $pk) {
name
nameLength
}
}
"""
for pk, name, length in [(fruit1.pk, "Banana", 6), (fruit2.pk, "Apple", 5)]:
result = schema.execute_sync(query, variable_values={"pk": pk})
assert result.errors is None
assert result.data == {"fruit": {"name": name, "nameLength": length}}
async def test_model_property_async(transactional_db):
@strawberry_django.type(models.Fruit)
class Fruit:
name: strawberry.auto
name_length: strawberry.auto
@strawberry.type
class Query:
fruit: Fruit = strawberry_django.field()
schema = strawberry.Schema(query=Query)
assert (
textwrap.dedent(str(schema))
== textwrap.dedent(
"""\
type Fruit {
name: String!
nameLength: Int!
}
type Query {
fruit(pk: ID!): Fruit!
}
""",
).strip()
)
fruit1 = await sync_to_async(models.Fruit.objects.create)(name="Banana")
fruit2 = await sync_to_async(models.Fruit.objects.create)(name="Apple")
query = """
query Fruit($pk: ID!) {
fruit(pk: $pk) {
name
nameLength
}
}
"""
for pk, name, length in [(fruit1.pk, "Banana", 6), (fruit2.pk, "Apple", 5)]:
result = await schema.execute(query, variable_values={"pk": pk})
assert result.errors is None
assert result.data == {"fruit": {"name": name, "nameLength": length}}
|