Example #1
0
    def _on_fragment_definition_in(self,
                                   element: _VisitorElementFragmentDefinition,
                                   *_args, **_kwargs) -> None:
        if element.name in self._fragments:
            self._add_exception(
                AlreadyDefined(
                    "Fragment < %s > already defined" % element.name,
                    path=self._internal_ctx.field_path[:],
                    locations=[element.get_location()],
                ))
            return

        type_condition = element.get_type_condition()
        if not self.schema.has_type(type_condition):
            self._add_exception(
                UnknownTypeDefinition(
                    "Unknown type < %s >." % type_condition,
                    locations=[element.get_location()],
                ))
            return

        nfd = NodeFragmentDefinition(
            self._internal_ctx.path,
            element.get_location(),
            element.name,
            type_condition=type_condition,
        )

        self._internal_ctx.fragment_definition = nfd
        self._fragments[element.name] = nfd
Example #2
0
def test_parser_nodes_node_fragment_definition_inst():
    from tartiflette.parser.nodes.fragment_definition import (
        NodeFragmentDefinition,
    )

    nfd = NodeFragmentDefinition(["A"], "Here", "Lol", "Nija")

    assert nfd.callbacks == []
    assert nfd.type_condition == "Nija"
    assert nfd.libgraphql_type == "FragmentDefinition"
Example #3
0
    a_visitor._events[a_visitor.IN]["default"] = a_callback

    a_visitor.update(a_visitor.IN, an_element)

    assert a_callback.called is False
    assert a_visitor.continue_child == 1
    assert a_visitor.event == a_visitor.IN
    assert len(a_visitor._internal_ctx.fragment_definition.callbacks) == 1


@pytest.mark.parametrize(
    "defined_fragments,used_fragments,unused",
    [
        (
            {
                "FragmentA": NodeFragmentDefinition("path", None, "FragmentA",
                                                    "A")
            },
            {"FragmentA"},
            [],
        ),
        (
            {
                "FragmentA":
                NodeFragmentDefinition("path", None, "FragmentA", "A"),
                "FragmentB":
                NodeFragmentDefinition("path", None, "FragmentB", "B"),
            },
            {"FragmentA"},
            ["FragmentB"],
        ),
        (