# frozen_string_literal: true require 'rails_helper' RSpec.describe Resolvers::PokemonResolver, type: :graphql do subject { described_class.new(object: nil, context: {}) } it { is_expected.to have_graphql_arguments(:id, :pokedex_number, :nickname) } describe '#resolve' do let!(:pokemon1) { create(:pokemon, nickname: 'Bulbasaur', pokedex_number: 1) } let!(:pokemon2) { create(:pokemon, nickname: 'Bulbasaur', pokedex_number: 1) } let!(:pokemon3) { create(:pokemon, nickname: 'Charizard', pokedex_number: 6) } let!(:pokemon4) { create(:pokemon, nickname: 'Pikachu', pokedex_number: 25) } it 'selects by id' do id = pokemon1.id res = resolve(described_class, args: {id: id}) expect(res).to contain_exactly(pokemon1) id = pokemon2.id res = resolve(described_class, args: {id: id}) expect(res).to contain_exactly(pokemon2) end it 'selects by nickname' do nickname = pokemon1.nickname res = resolve(described_class, args: {nickname: nickname}) expect(res).to contain_exactly(pokemon1, pokemon2) nickname = pokemon3.nickname res = resolve(described_class, args: {nickname: nickname}) expect(res).to contain_exactly(pokemon3) end it 'selects by pokedex_number' do pkdx = pokemon1.pokedex_number res = resolve(described_class, args: {pokedex_number: pkdx}) expect(res).to contain_exactly(pokemon1, pokemon2) pkdx = pokemon4.pokedex_number res = resolve(described_class, args: {pokedex_number: pkdx}) expect(res).to contain_exactly(pokemon4) end end end