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 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124
|
from typing import cast
import strawberry
from django.db import models
from strawberry import auto
from strawberry.types import get_object_definition
from strawberry.types.base import StrawberryOptional
import strawberry_django
class InputFieldsModel(models.Model):
mandatory = models.IntegerField()
default = models.IntegerField(default=1)
blank = models.IntegerField(blank=True)
null = models.IntegerField(null=True)
def test_input_type():
@strawberry_django.input(InputFieldsModel)
class InputType:
id: auto
mandatory: auto
default: auto
blank: auto
null: auto
assert [
(f.name, f.type) for f in get_object_definition(InputType, strict=True).fields
] == [
("id", StrawberryOptional(cast("type", strawberry.ID))),
("mandatory", int),
("default", StrawberryOptional(int)),
("blank", StrawberryOptional(int)),
("null", StrawberryOptional(int)),
]
def test_input_type_for_partial_update():
@strawberry_django.input(InputFieldsModel, partial=True)
class InputType:
id: auto
mandatory: auto
default: auto
blank: auto
null: auto
assert [
(f.name, f.type) for f in get_object_definition(InputType, strict=True).fields
] == [
("id", StrawberryOptional(cast("type", strawberry.ID))),
("mandatory", StrawberryOptional(int)),
("default", StrawberryOptional(int)),
("blank", StrawberryOptional(int)),
("null", StrawberryOptional(int)),
]
def test_input_type_basic():
from tests import models
@strawberry_django.input(models.User)
class UserInput:
name: auto
assert [
(f.name, f.type) for f in get_object_definition(UserInput, strict=True).fields
] == [
("name", str),
]
def test_partial_input_type():
from tests import models
@strawberry_django.input(models.User, partial=True)
class UserPartialInput:
name: auto
assert [
(f.name, f.type)
for f in get_object_definition(UserPartialInput, strict=True).fields
] == [
("name", StrawberryOptional(str)),
]
def test_partial_input_type_inheritance():
from tests import models
@strawberry_django.input(models.User)
class UserInput:
name: auto
@strawberry_django.input(models.User, partial=True)
class UserPartialInput(UserInput):
pass
assert [
(f.name, f.type)
for f in get_object_definition(UserPartialInput, strict=True).fields
] == [
("name", StrawberryOptional(str)),
]
def test_input_type_inheritance_from_type():
from tests import models
@strawberry_django.type(models.User)
class User:
id: auto
name: auto
@strawberry_django.input(models.User)
class UserInput(User):
pass
assert [
(f.name, f.type) for f in get_object_definition(UserInput, strict=True).fields
] == [
("id", StrawberryOptional(cast("type", strawberry.ID))),
("name", str),
]
|