def test_Schema_get_type_raises_on_unknown_type(): schema = Schema( ObjectType("Query", [Field("getObject", Interface, resolver=_null_resolver)]), directives=[Dir], ) with pytest.raises(UnknownType): schema.get_type("UnknownType")
def test_Schema_includes_input_types_only_used_in_directives(): schema = Schema( ObjectType("Query", [Field("getObject", Interface, resolver=_null_resolver)]), directives=[Dir], ) assert schema.get_type("DirInput") is DirInput assert schema.get_type("WrappedDirInput") is WrappedDirInput
def test_replace_interface_in_implementers(schema: Schema) -> None: NewObject = InterfaceType( "Object", fields=[ Field("id", NonNullType(ID)), Field("name", NonNullType(String)), ], ) schema._replace_types_and_directives({"Object": NewObject}) assert (cast(ObjectType, schema.get_type("Person")).interfaces[0] is cast( ObjectType, schema.get_type("Animal")).interfaces[0] is schema.types["Object"] is NewObject)
def test_replace_type_in_union(schema: Schema) -> None: NewPerson = ObjectType( "Person", fields=(list(cast(ObjectType, schema.types["Person"]).fields) + [Field("last_name", NonNullType(String))]), interfaces=[cast(InterfaceType, schema.types["Object"])], ) schema._replace_types_and_directives({"Person": NewPerson}) assert cast(ObjectType, schema.get_type("Person")) is NewPerson union_type = cast(UnionType, schema.get_type("LivingBeing")) assert NewPerson in union_type.types assert 2 == len(union_type.types)
def test_Schema_includes_introspection_types(): schema = Schema(ObjectType("Query", [Field("author", BlogAuthor)])) assert schema.get_type("__Schema") is not None assert schema.get_type("__Directive") is not None assert schema.get_type("__DirectiveLocation") is not None assert schema.get_type("__Type") is not None assert schema.get_type("__EnumValue") is not None assert schema.get_type("__InputValue") is not None assert schema.get_type("__Field") is not None assert schema.get_type("__TypeKind") is not None
def test_resolver_decorator_with_wildcard(): Query = ObjectType("Query", [Field("id", String)]) schema = Schema(Query) @schema.resolver("Query.*") def query_default(root, ctx, info): return 42 assert (cast(ObjectType, schema.get_type("Query")).default_resolver is query_default)
def test_register_resolver_on_child_type(): Object = ObjectType("Object", [Field("id", String)]) schema = Schema(ObjectType("Query", [Field("foo", Object)])) resolver = lambda *_, **__: None schema.register_resolver("Object", "id", resolver) assert (schema.get_type("Object").fields[0].resolver is resolver # type: ignore )
def test_register_default_resolver(): Query = ObjectType("Query", [Field("id", String)]) schema = Schema(Query) def query_default(root, ctx, info): return 42 schema.register_default_resolver("Query", query_default) assert (cast(ObjectType, schema.get_type("Query")).default_resolver is query_default)
def test_register_resolver_accepts_override_with_flag(): old_resolver = lambda *_, **__: None Object = ObjectType("Object", [Field("id", String, resolver=old_resolver)]) schema = Schema(ObjectType("Query", [Field("foo", Object)])) resolver = lambda *_, **__: None schema.register_resolver("Object", "id", resolver, allow_override=True) assert (schema.get_type("Object").fields[0].resolver is resolver # type: ignore )
def test_register_default_resolver_allow_override(): Query = ObjectType("Query", [Field("id", String)]) schema = Schema(Query) def query_default(root, ctx, info): return 42 def query_default_2(root, ctx, info): return 84 schema.register_default_resolver("Query", query_default) schema.register_default_resolver("Query", query_default_2, allow_override=True) assert (cast(ObjectType, schema.get_type("Query")).default_resolver is query_default_2)
def test_register_default_resolver_already_set(): Query = ObjectType("Query", [Field("id", String)]) schema = Schema(Query) def query_default(root, ctx, info): return 42 def query_default_2(root, ctx, info): return 84 schema.register_default_resolver("Query", query_default) with pytest.raises(ValueError): schema.register_default_resolver("Query", query_default_2) assert (cast(ObjectType, schema.get_type("Query")).default_resolver is query_default)