impress-2020/server/index.test.js

98 lines
2.2 KiB
JavaScript
Raw Normal View History

2020-04-22 11:51:36 -07:00
const gql = require("graphql-tag");
const { createTestClient } = require("apollo-server-testing");
const connectToDb = require("./db");
const actualConnectToDb = jest.requireActual("./db");
const { server } = require("./index");
const { query } = createTestClient(server);
// Spy on db.execute, so we can snapshot the queries we run. This can help us
// keep an eye on perf - watch for tests with way too many queries!
jest.mock("./db");
let queryFn;
beforeEach(() => {
numQueries = 0;
connectToDb.mockImplementation(async (...args) => {
const db = await actualConnectToDb(...args);
queryFn = jest.spyOn(db, "execute");
return db;
});
});
afterEach(() => {
jest.resetAllMocks();
});
it("can load items", async () => {
const res = await query({
query: gql`
query($ids: [ID!]!) {
items(ids: $ids) {
id
name
}
}
`,
variables: {
ids: [
38913, // Zafara Agent Gloves
38911, // Zafara Agent Hood
38912, // Zafara Agent Robe
],
},
});
expect(res.errors).toBeFalsy();
expect(res.data).toMatchInlineSnapshot(`
Object {
"items": Array [
Object {
"id": "38911",
"name": "Zafara Agent Hood",
},
Object {
"id": "38912",
"name": "Zafara Agent Robe",
},
Object {
"id": "38913",
"name": "Zafara Agent Gloves",
},
],
}
`);
expect(queryFn.mock.calls).toMatchInlineSnapshot(`
Array [
Array [
"SELECT * FROM items WHERE id IN (?,?,?)",
Array [
"38913",
"38911",
"38912",
],
],
Array [
"SELECT * FROM item_translations WHERE item_id = ? AND locale = ? LIMIT 1",
Array [
38911,
"en",
],
],
Array [
"SELECT * FROM item_translations WHERE item_id = ? AND locale = ? LIMIT 1",
Array [
38912,
"en",
],
],
Array [
"SELECT * FROM item_translations WHERE item_id = ? AND locale = ? LIMIT 1",
Array [
38913,
"en",
],
],
]
`);
});