Skip to content

Commit 3d13d7a

Browse files
committed
Simplify testing AST nodes in build/extended_schema tests
Replicates graphql/graphql-js@33c069c
1 parent b652e42 commit 3d13d7a

File tree

2 files changed

+284
-169
lines changed

2 files changed

+284
-169
lines changed

tests/utilities/test_build_ast_schema.py

Lines changed: 147 additions & 68 deletions
Original file line numberDiff line numberDiff line change
@@ -56,14 +56,14 @@ def cycle_sdl(sdl: str) -> str:
5656
TypeWithExtensionAstNodes = GraphQLNamedType
5757

5858

59-
def print_ast_node(obj: TypeWithAstNode) -> str:
59+
def expect_ast_node(obj: TypeWithAstNode, expected: str) -> None:
6060
assert obj is not None and obj.ast_node is not None
61-
return print_ast(obj.ast_node)
61+
assert print_ast(obj.ast_node) == expected
6262

6363

64-
def print_all_ast_nodes(obj: TypeWithExtensionAstNodes) -> str:
65-
assert obj is not None and obj.ast_node is not None
66-
return print_ast(DocumentNode(definitions=[obj.ast_node, *obj.extension_ast_nodes]))
64+
def expect_extension_ast_nodes(obj: TypeWithExtensionAstNodes, expected: str) -> None:
65+
assert obj is not None and obj.extension_ast_nodes is not None
66+
assert "\n\n".join(print_ast(node) for node in obj.extension_ast_nodes) == expected
6767

6868

6969
def describe_schema_builder():
@@ -729,25 +729,16 @@ def supports_specified_by_directives():
729729
assert foo_scalar.specified_by_url == "https://example.com/foo_spec"
730730

731731
def correctly_extend_scalar_type():
732-
scalar_sdl = dedent(
732+
schema = build_schema(
733733
"""
734734
scalar SomeScalar
735-
736735
extend scalar SomeScalar @foo
737-
738736
extend scalar SomeScalar @bar
737+
738+
directive @foo on SCALAR
739+
directive @bar on SCALAR
739740
"""
740741
)
741-
schema = build_schema(
742-
scalar_sdl
743-
+ "\n\n"
744-
+ dedent(
745-
"""
746-
directive @foo on SCALAR
747-
directive @bar on SCALAR
748-
"""
749-
)
750-
)
751742

752743
some_scalar = assert_scalar_type(schema.get_type("SomeScalar"))
753744
assert print_type(some_scalar) == dedent(
@@ -756,10 +747,20 @@ def correctly_extend_scalar_type():
756747
"""
757748
)
758749

759-
assert print_all_ast_nodes(some_scalar) == scalar_sdl
750+
expect_ast_node(some_scalar, "scalar SomeScalar")
751+
expect_extension_ast_nodes(
752+
some_scalar,
753+
dedent(
754+
"""
755+
extend scalar SomeScalar @foo
756+
757+
extend scalar SomeScalar @bar
758+
"""
759+
),
760+
)
760761

761762
def correctly_extend_object_type():
762-
object_sdl = dedent(
763+
schema = build_schema(
763764
"""
764765
type SomeObject implements Foo {
765766
first: String
@@ -772,19 +773,12 @@ def correctly_extend_object_type():
772773
extend type SomeObject implements Baz {
773774
third: Float
774775
}
776+
777+
interface Foo
778+
interface Bar
779+
interface Baz
775780
"""
776781
)
777-
schema = build_schema(
778-
object_sdl
779-
+ "\n\n"
780-
+ dedent(
781-
"""
782-
interface Foo
783-
interface Bar
784-
interface Baz
785-
"""
786-
)
787-
)
788782

789783
some_object = assert_object_type(schema.get_type("SomeObject"))
790784
assert print_type(some_object) == dedent(
@@ -797,10 +791,33 @@ def correctly_extend_object_type():
797791
"""
798792
)
799793

800-
assert print_all_ast_nodes(some_object) == object_sdl
794+
expect_ast_node(
795+
some_object,
796+
dedent(
797+
"""
798+
type SomeObject implements Foo {
799+
first: String
800+
}
801+
"""
802+
),
803+
)
804+
expect_extension_ast_nodes(
805+
some_object,
806+
dedent(
807+
"""
808+
extend type SomeObject implements Bar {
809+
second: Int
810+
}
811+
812+
extend type SomeObject implements Baz {
813+
third: Float
814+
}
815+
"""
816+
),
817+
)
801818

802819
def correctly_extend_interface_type():
803-
interface_sdl = dedent(
820+
schema = build_schema(
804821
"""
805822
interface SomeInterface {
806823
first: String
@@ -815,7 +832,6 @@ def correctly_extend_interface_type():
815832
}
816833
"""
817834
)
818-
schema = build_schema(interface_sdl)
819835

820836
some_interface = assert_interface_type(schema.get_type("SomeInterface"))
821837
assert print_type(some_interface) == dedent(
@@ -828,29 +844,43 @@ def correctly_extend_interface_type():
828844
"""
829845
)
830846

831-
assert print_all_ast_nodes(some_interface) == interface_sdl
847+
expect_ast_node(
848+
some_interface,
849+
dedent(
850+
"""
851+
interface SomeInterface {
852+
first: String
853+
}
854+
"""
855+
),
856+
)
857+
expect_extension_ast_nodes(
858+
some_interface,
859+
dedent(
860+
"""
861+
extend interface SomeInterface {
862+
second: Int
863+
}
864+
865+
extend interface SomeInterface {
866+
third: Float
867+
}
868+
"""
869+
),
870+
)
832871

833872
def correctly_extend_union_type():
834-
union_sdl = dedent(
873+
schema = build_schema(
835874
"""
836875
union SomeUnion = FirstType
837-
838876
extend union SomeUnion = SecondType
839-
840877
extend union SomeUnion = ThirdType
878+
879+
type FirstType
880+
type SecondType
881+
type ThirdType
841882
"""
842883
)
843-
schema = build_schema(
844-
union_sdl
845-
+ "\n\n"
846-
+ dedent(
847-
"""
848-
type FirstType
849-
type SecondType
850-
type ThirdType
851-
"""
852-
)
853-
)
854884

855885
some_union = assert_union_type(schema.get_type("SomeUnion"))
856886
assert print_type(some_union) == dedent(
@@ -859,10 +889,20 @@ def correctly_extend_union_type():
859889
"""
860890
)
861891

862-
assert print_all_ast_nodes(some_union) == union_sdl
892+
expect_ast_node(some_union, "union SomeUnion = FirstType")
893+
expect_extension_ast_nodes(
894+
some_union,
895+
dedent(
896+
"""
897+
extend union SomeUnion = SecondType
898+
899+
extend union SomeUnion = ThirdType
900+
"""
901+
),
902+
)
863903

864904
def correctly_extend_enum_type():
865-
enum_sdl = dedent(
905+
schema = build_schema(
866906
"""
867907
enum SomeEnum {
868908
FIRST
@@ -877,7 +917,6 @@ def correctly_extend_enum_type():
877917
}
878918
"""
879919
)
880-
schema = build_schema(enum_sdl)
881920

882921
some_enum = assert_enum_type(schema.get_type("SomeEnum"))
883922
assert print_type(some_enum) == dedent(
@@ -890,10 +929,33 @@ def correctly_extend_enum_type():
890929
"""
891930
)
892931

893-
assert print_all_ast_nodes(some_enum) == enum_sdl
932+
expect_ast_node(
933+
some_enum,
934+
dedent(
935+
"""
936+
enum SomeEnum {
937+
FIRST
938+
}
939+
"""
940+
),
941+
)
942+
expect_extension_ast_nodes(
943+
some_enum,
944+
dedent(
945+
"""
946+
extend enum SomeEnum {
947+
SECOND
948+
}
949+
950+
extend enum SomeEnum {
951+
THIRD
952+
}
953+
"""
954+
),
955+
)
894956

895957
def correctly_extend_input_object_type():
896-
input_sdl = dedent(
958+
schema = build_schema(
897959
"""
898960
input SomeInput {
899961
first: String
@@ -908,7 +970,6 @@ def correctly_extend_input_object_type():
908970
}
909971
"""
910972
)
911-
schema = build_schema(input_sdl)
912973

913974
some_input = assert_input_object_type(schema.get_type("SomeInput"))
914975
assert print_type(some_input) == dedent(
@@ -921,7 +982,30 @@ def correctly_extend_input_object_type():
921982
"""
922983
)
923984

924-
assert print_all_ast_nodes(some_input) == input_sdl
985+
expect_ast_node(
986+
some_input,
987+
dedent(
988+
"""
989+
input SomeInput {
990+
first: String
991+
}
992+
"""
993+
),
994+
)
995+
expect_extension_ast_nodes(
996+
some_input,
997+
dedent(
998+
"""
999+
extend input SomeInput {
1000+
second: Int
1001+
}
1002+
1003+
extend input SomeInput {
1004+
third: Float
1005+
}
1006+
"""
1007+
),
1008+
)
9251009

9261010
def correctly_assign_ast_nodes():
9271011
sdl = dedent(
@@ -982,20 +1066,15 @@ def correctly_assign_ast_nodes():
9821066
] == ast.definitions
9831067

9841068
test_field = query.fields["testField"]
985-
assert print_ast_node(test_field) == (
986-
"testField(testArg: TestInput): TestUnion"
987-
)
988-
assert print_ast_node(test_field.args["testArg"]) == "testArg: TestInput"
989-
assert print_ast_node(test_input.fields["testInputField"]) == (
990-
"testInputField: TestEnum"
991-
)
1069+
expect_ast_node(test_field, "testField(testArg: TestInput): TestUnion")
1070+
expect_ast_node(test_field.args["testArg"], "testArg: TestInput")
1071+
expect_ast_node(test_input.fields["testInputField"], "testInputField: TestEnum")
9921072
test_enum_value = test_enum.values["TEST_VALUE"]
993-
assert test_enum_value
994-
assert print_ast_node(test_enum_value) == "TEST_VALUE"
995-
assert print_ast_node(test_interface.fields["interfaceField"]) == (
996-
"interfaceField: String"
1073+
expect_ast_node(test_enum_value, "TEST_VALUE")
1074+
expect_ast_node(
1075+
test_interface.fields["interfaceField"], "interfaceField: String"
9971076
)
998-
assert print_ast_node(test_directive.args["arg"]) == "arg: TestScalar"
1077+
expect_ast_node(test_directive.args["arg"], "arg: TestScalar")
9991078

10001079
def root_operation_types_with_custom_names():
10011080
schema = build_schema(

0 commit comments

Comments
 (0)