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
|
"""Tests for GraphQL annotated types generation."""
from __future__ import annotations
from typing import TYPE_CHECKING
import pytest
from tests.main.conftest import GRAPHQL_DATA_PATH, run_main_and_assert
from tests.main.graphql.conftest import assert_file_content
if TYPE_CHECKING:
from pathlib import Path
def test_annotated(output_file: Path) -> None:
"""Test GraphQL code generation with annotated types."""
run_main_and_assert(
input_path=GRAPHQL_DATA_PATH / "annotated.graphql",
output_path=output_file,
input_file_type="graphql",
assert_func=assert_file_content,
extra_args=["--output-model-type", "pydantic_v2.BaseModel", "--use-annotated"],
)
def test_annotated_use_standard_collections(output_file: Path) -> None:
"""Test GraphQL annotated types with standard collections."""
run_main_and_assert(
input_path=GRAPHQL_DATA_PATH / "annotated.graphql",
output_path=output_file,
input_file_type="graphql",
assert_func=assert_file_content,
extra_args=[
"--output-model-type",
"pydantic_v2.BaseModel",
"--use-annotated",
"--use-standard-collections",
],
)
@pytest.mark.cli_doc(
options=["--use-annotated", "--use-union-operator"],
input_schema="graphql/annotated.graphql",
cli_args=[
"--output-model-type",
"pydantic_v2.BaseModel",
"--use-annotated",
"--use-standard-collections",
"--use-union-operator",
],
golden_output="graphql/annotated_use_standard_collections_use_union_operator.py",
related_options=["--use-standard-collections"],
)
def test_annotated_use_standard_collections_use_union_operator(output_file: Path) -> None:
"""Test GraphQL annotated types with standard collections and union operator."""
run_main_and_assert(
input_path=GRAPHQL_DATA_PATH / "annotated.graphql",
output_path=output_file,
input_file_type="graphql",
assert_func=assert_file_content,
extra_args=[
"--output-model-type",
"pydantic_v2.BaseModel",
"--use-annotated",
"--use-standard-collections",
"--use-union-operator",
],
)
@pytest.mark.cli_doc(
options=["--use-annotated", "--use-union-operator"],
input_schema="graphql/annotated.graphql",
cli_args=["--output-model-type", "pydantic_v2.BaseModel", "--use-annotated", "--use-union-operator"],
golden_output="graphql/annotated_use_union_operator.py",
)
def test_annotated_use_union_operator(output_file: Path) -> None:
"""Test GraphQL annotated types with union operator."""
run_main_and_assert(
input_path=GRAPHQL_DATA_PATH / "annotated.graphql",
output_path=output_file,
input_file_type="graphql",
assert_func=assert_file_content,
extra_args=[
"--output-model-type",
"pydantic_v2.BaseModel",
"--use-annotated",
"--use-union-operator",
],
)
@pytest.mark.cli_doc(
options=["--aliases", "--use-annotated"],
input_schema="graphql/field-aliases.graphql",
cli_args=[
"--output-model-type",
"pydantic_v2.BaseModel",
"--use-annotated",
"--aliases",
"graphql/field-aliases.json",
],
golden_output="graphql/annotated_field_aliases.py",
)
def test_annotated_field_aliases(output_file: Path) -> None:
"""Test GraphQL annotated types with field aliases."""
run_main_and_assert(
input_path=GRAPHQL_DATA_PATH / "field-aliases.graphql",
output_path=output_file,
input_file_type="graphql",
assert_func=assert_file_content,
extra_args=[
"--output-model-type",
"pydantic_v2.BaseModel",
"--use-annotated",
"--aliases",
str(GRAPHQL_DATA_PATH / "field-aliases.json"),
],
)
|