예제 #1
0
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")
예제 #2
0
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
예제 #3
0
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)
예제 #4
0
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)
예제 #5
0
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
예제 #6
0
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)
예제 #7
0
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
            )
예제 #8
0
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)
예제 #9
0
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
            )
예제 #10
0
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)
예제 #11
0
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)