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
|
import keyword
import textwrap
import pytest
from strawberry.schema_codegen import codegen
@pytest.mark.parametrize(
"name",
[keyword for keyword in keyword.kwlist if keyword not in ("False", "True", "None")],
)
def test_handles_keywords(name: str):
schema = f"""
type Example {{
{name}: String!
}}
"""
expected = textwrap.dedent(
f"""
import strawberry
@strawberry.type
class Example:
{name}_: str = strawberry.field(name="{name}")
"""
).strip()
assert codegen(schema).strip() == expected
def test_converts_names_to_snake_case():
schema = """
type Example {
someField: String!
allowCustomExportURL: Boolean!
allowInsecureTLS: Boolean!
}
"""
expected = textwrap.dedent(
"""
import strawberry
@strawberry.type
class Example:
some_field: str
allow_custom_export_url: bool
allow_insecure_tls: bool
"""
).strip()
assert codegen(schema).strip() == expected
|