Se você tem acompanhado a nossa sequencia de tutoriais práticos de como automatizar seus testes de API nos começamos a abstrair nosso código da nossa spec e passamos a colocar eles dentro de uma estrutura de código.
Se quiser ver como ficou a abstração do nosso request leia o artigo anterior Jest + Supertest para teste de API GraphQL — Parte 4: criando validação de contrato.
Bom hoje a nossa spec se encontra dessa forma:
import { requestGraphqlTutorial } from "../../helpers/utils/request";
import { schemaValidator } from "../../helpers/utils/schemaValidator";
const schema = require("../../graphql/schema/states/states.schema.json")
describe('Criando a nova primeira spec', () => {
var response = null
var payload = {
query: `query states($filter: StateFilterInput, $pagination: PaginationInput) {
states(filter: $filter, page: $pagination) {
totalCount
edges {
cursor
node {
name
state_code
country_code
latitude
longitude
}
}
pageInfo {
hasNextPage
hasPreviousPage
endCursor
startCursor
}
}
}`,
variables: {
filter: {
ciso2: "US",
},
pagination: {
first: 5,
},
}
}
var baseURL = "https://api.geographql.rudio.dev";
test('Vamos criar a primeira request ', async () => {
response = await requestGraphqlTutorial(baseURL, payload)
schemaValidator(response.body, schema)
console.log(JSON.stringify(response.body))
});
});
Ainda temos o nosso payload dentro da spec, e acredite temos como melhor isso e vamos fazer agora.
Dentro da pasta graphql criada no tutorial anterior iremos adicionar entro dela adicionar a pasta a query.

E dentro desta pasta irei criar uma chamada states porque quero armazenar dentro dela todas as querys relacionadas a states. Dentro desta pasta irei criar o arquivo states.js e dentro dele será adicionado a nossa query, desta forma.
export const queryDataStates = () => ({
query: `query states($filter: StateFilterInput, $pagination: PaginationInput) {
states(filter: $filter, page: $pagination) {
totalCount
edges {
cursor
node {
name
state_code
country_code
latitude
longitude
}
}
pageInfo {
hasNextPage
hasPreviousPage
endCursor
startCursor
}
}
}`,
variables: {
filter: {
ciso2: "US",
},
pagination: {
first: 5,
},
},
});
export const queryDataStates = () => função sendo exportada retornando dois parâmetros, sendo eles: a query e as variables.
Agora na nossa spec iremos importar está função, e no lugar do nosso payload adicionando a nossa função.
import { requestGraphqlTutorial } from "../../helpers/utils/request";
import { schemaValidator } from "../../helpers/utils/schemaValidator";
import { queryDataStates } from "../../graphql/query/states/states";
const schema = require("../../graphql/schema/states/states.schema.json")
describe('Criando a nova primeira spec', () => {
var response = null
var baseURL = "https://api.geographql.rudio.dev";
test('Vamos criar a primeira request ', async () => {
response = await requestGraphqlTutorial(baseURL, queryDataStates())
schemaValidator(response.body, schema)
console.log(JSON.stringify(response.body))
});
});
Rodando nossos testes agora, vemos que ele continua funcionando e passando.

Parabéns! Agora você aprendeu a colocar as querys e mutation em um arquivo separado facilitando assim a manutenabilidade e performance do seu código.
E se você quer ver como o repositório final se encontra só acessar o meu portfolio no Github https://github.com/pricaimiTech/geographqlJestAPI
E não esqueça de me seguir nas minhas redes sociais https://linktr.ee/priscilacaimi
Deixe um comentário