def test_utils_coercers__get_coercer(field_mock):
    from tartiflette.utils.coercer import get_coercer

    field_mock.schema.find_type = Mock(return_value=None)

    assert get_coercer(field_mock) is not None
    assert field_mock.schema.find_enum.call_args_list == [(("aType", ), )]
    assert field_mock.schema.find_scalar.call_args_list == [(("String", ), )]

    field_mock.schema.find_enum = Mock(return_value=None)

    assert get_coercer(field_mock) is not None
    assert field_mock.schema.find_enum.call_args_list == [(("aType", ), )]
    assert field_mock.schema.find_scalar.call_args_list == [
        (("String", ), ),
        (("aType", ), ),
    ]

    field_mock.schema.find_scalar = Mock(return_value=None)

    assert get_coercer(field_mock) is not None
    assert field_mock.schema.find_enum.call_args_list == [
        (("aType", ), ),
        (("aType", ), ),
    ]
    assert field_mock.schema.find_scalar.call_args_list == [(("aType", ), )]
Exemple #2
0
    def bake(self, schema: "GraphQLSchema") -> None:
        self._schema = schema
        self._directives_implementations = get_directive_instances(
            self._directives, self._schema)

        self._introspection_directives = wraps_with_directives(
            directives_definition=self._directives_implementations,
            directive_hook="on_introspection",
        )

        if isinstance(self.gql_type, GraphQLType):
            self._type = self.gql_type
        else:
            self._type["name"] = self.gql_type
            self._type["kind"] = self._schema.find_type(self.gql_type).kind

        self.coercer = partial(
            wraps_with_directives(
                directives_definition=self.directives,
                directive_hook="on_argument_execution",
                func=partial(
                    argument_coercer,
                    input_coercer=get_coercer(self,
                                              schema=schema,
                                              way=CoercerWay.INPUT),
                ),
            ),
            self,
        )
def test_utils_coercers__get_coercer_no_schema():
    from tartiflette.utils.coercer import get_coercer

    f = Mock()
    f.schema = None

    assert get_coercer(f) is None
Exemple #4
0
def test_resolver_factory__get_coercer_no_schema():
    from tartiflette.utils.coercer import get_coercer

    f = Mock()
    f.schema = None

    assert get_coercer(f) is None
Exemple #5
0
def test_resolver_factory__get_coercer___Type():
    from tartiflette.utils.coercer import get_coercer
    from tartiflette.utils.coercer import _built_in_coercer
    from tartiflette.utils.coercer import _object_coercer

    field = Mock()
    field.gql_type = "__Type"

    c = get_coercer(field)

    assert c.func is _built_in_coercer
    a, = c.args
    assert a.func is _object_coercer
    assert a.args == (None,)
Exemple #6
0
    def bake(self, schema: "GraphQLSchema") -> None:
        self._schema = schema
        self._directives_implementations = get_directive_implem_list(
            self._directives, self._schema)
        if isinstance(self.gql_type, GraphQLType):
            self._type = self.gql_type
        else:
            self._type["name"] = self.gql_type
            self._type["kind"] = self._schema.find_type(self.gql_type).kind

        self.coercer = partial(
            surround_with_argument_execution_directives(
                partial(
                    argument_coercer,
                    input_coercer=get_coercer(self,
                                              schema=schema,
                                              way=CoercerWay.INPUT),
                ),
                self.directives,
            ),
            self,
        )
def test_utils_coercers__get_coercer_not_ok(field_mock):
    from tartiflette.utils.coercer import get_coercer

    field_mock.schema.find_scalar = Mock(return_value=None)
    assert get_coercer(field_mock) is not None
Exemple #8
0
 def update_coercer(self) -> None:
     self._coercer = get_coercer(self._schema_field)
Exemple #9
0
 def __init__(self, func: Callable, schema_field: "GraphQLField") -> None:
     self._raw_func = func
     self._directivated_func = func
     self._schema_field = schema_field
     self._coercer = get_coercer(schema_field)
     self._shall_produce_list = _shall_return_a_list(schema_field.gql_type)