def test_relay_node_field_resolver(): data_source = InMemoryDataSource() R = TypeRegistry() Relay = R.Mixin(RelayMixin, data_source) class Pet(R.Implements[R.Node]): name = R.String class Query(R.ObjectType): pets = R.Pet.List node = Relay.NodeField schema = R.Schema(R.Query) data_source.add(Pet(id=5, name="Garfield")) data_source.add(Pet(id=6, name="Odis")) result = graphql( schema, """ { node(id: "UGV0OjU=") { id, ... on Pet { name } } } """, ) assert not result.errors assert result.data == {"node": {"id": "UGV0OjU=", "name": "Garfield"}}
def test_relay_node_field_resolver(): data_source = InMemoryDataSource() R = TypeRegistry() Relay = R.Mixin(RelayMixin, data_source) class Pet(R.Implements[R.Node]): name = R.String class Query(R.ObjectType): pets = R.Pet.List node = Relay.NodeField schema = R.Schema(R.Query) data_source.add(Pet(id=5, name='Garfield')) data_source.add(Pet(id=6, name='Odis')) result = graphql(schema, ''' { node(id: "UGV0OjU=") { id, ... on Pet { name } } } ''') assert not result.errors assert result.data == {'node': {'id': 'UGV0OjU=', 'name': 'Garfield'}}
class Letter(R.Implements[Relay.Node]): letter = R.String class Query(R.ObjectType): letters = Relay.Connection('Letter', R.Letter) node = Relay.NodeField Schema = R.Schema(R.Query) letters = {} for i, letter in enumerate(letter_chars, 1): l = Letter(id=i, letter=letter) letters[letter] = l data_source.add(l) def edges(selected_letters): return [ { 'node': { 'id': base64('Letter:%s' % l.id), 'letter': l.letter }, 'cursor': base64('sc:%s' % l.id) } for l in [letters[i] for i in selected_letters] ]