2020-04-22 11:51:36 -07:00
|
|
|
const gql = require("graphql-tag");
|
2020-04-22 13:03:32 -07:00
|
|
|
const { ApolloServer } = require("apollo-server");
|
2020-04-22 11:51:36 -07:00
|
|
|
const { createTestClient } = require("apollo-server-testing");
|
|
|
|
|
|
|
|
|
|
const connectToDb = require("./db");
|
|
|
|
|
const actualConnectToDb = jest.requireActual("./db");
|
2020-04-22 13:03:32 -07:00
|
|
|
const { config } = require("./index");
|
2020-04-22 11:51:36 -07:00
|
|
|
|
2020-04-22 13:03:32 -07:00
|
|
|
const { query } = createTestClient(new ApolloServer(config));
|
2020-04-22 11:51:36 -07:00
|
|
|
|
|
|
|
|
// 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;
|
2020-04-22 15:53:59 -07:00
|
|
|
let db;
|
2020-04-23 01:08:00 -07:00
|
|
|
beforeAll(() => {
|
2020-04-22 11:51:36 -07:00
|
|
|
connectToDb.mockImplementation(async (...args) => {
|
2020-04-22 15:53:59 -07:00
|
|
|
db = await actualConnectToDb(...args);
|
2020-04-22 11:51:36 -07:00
|
|
|
queryFn = jest.spyOn(db, "execute");
|
|
|
|
|
return db;
|
|
|
|
|
});
|
|
|
|
|
});
|
|
|
|
|
afterEach(() => {
|
2020-04-23 01:08:00 -07:00
|
|
|
queryFn.mockClear();
|
|
|
|
|
});
|
|
|
|
|
afterAll(() => {
|
2020-04-22 15:53:59 -07:00
|
|
|
db.end();
|
2020-04-22 11:51:36 -07:00
|
|
|
});
|
|
|
|
|
|
2020-04-23 01:08:00 -07:00
|
|
|
describe("Item", () => {
|
|
|
|
|
it("loads metadata", async () => {
|
|
|
|
|
const res = await query({
|
|
|
|
|
query: gql`
|
|
|
|
|
query {
|
|
|
|
|
items(ids: ["38913", "38911", "38912"]) {
|
|
|
|
|
id
|
|
|
|
|
name
|
|
|
|
|
thumbnailUrl
|
|
|
|
|
}
|
2020-04-22 11:51:36 -07:00
|
|
|
}
|
2020-04-23 01:08:00 -07:00
|
|
|
`,
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
expect(res).toHaveNoErrors();
|
|
|
|
|
expect(res.data).toMatchInlineSnapshot(`
|
|
|
|
|
Object {
|
|
|
|
|
"items": Array [
|
2020-04-23 14:23:46 -07:00
|
|
|
Object {
|
|
|
|
|
"id": "38913",
|
|
|
|
|
"name": "Zafara Agent Gloves",
|
|
|
|
|
"thumbnailUrl": "http://images.neopets.com/items/clo_zafara_agent_gloves.gif",
|
|
|
|
|
},
|
2020-04-23 01:08:00 -07:00
|
|
|
Object {
|
|
|
|
|
"id": "38911",
|
|
|
|
|
"name": "Zafara Agent Hood",
|
|
|
|
|
"thumbnailUrl": "http://images.neopets.com/items/clo_zafara_agent_hood.gif",
|
|
|
|
|
},
|
|
|
|
|
Object {
|
|
|
|
|
"id": "38912",
|
|
|
|
|
"name": "Zafara Agent Robe",
|
|
|
|
|
"thumbnailUrl": "http://images.neopets.com/items/clo_zafara_agent_robe.gif",
|
|
|
|
|
},
|
|
|
|
|
],
|
2020-04-22 11:51:36 -07:00
|
|
|
}
|
2020-04-23 01:08:00 -07:00
|
|
|
`);
|
|
|
|
|
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 IN (?,?,?) AND locale = \\"en\\"",
|
|
|
|
|
Array [
|
2020-04-23 14:23:46 -07:00
|
|
|
"38913",
|
2020-04-23 01:08:00 -07:00
|
|
|
"38911",
|
|
|
|
|
"38912",
|
|
|
|
|
],
|
|
|
|
|
],
|
|
|
|
|
]
|
|
|
|
|
`);
|
2020-04-22 11:51:36 -07:00
|
|
|
});
|
|
|
|
|
|
2020-04-23 01:08:00 -07:00
|
|
|
it("loads appearance data", async () => {
|
|
|
|
|
const res = await query({
|
|
|
|
|
query: gql`
|
|
|
|
|
query {
|
2020-04-23 13:10:42 -07:00
|
|
|
items(ids: ["38912", "38911", "37375"]) {
|
2020-04-23 01:08:00 -07:00
|
|
|
id
|
|
|
|
|
name
|
|
|
|
|
|
|
|
|
|
appearanceOn(speciesId: "54", colorId: "75") {
|
|
|
|
|
layers {
|
|
|
|
|
id
|
|
|
|
|
imageUrl(size: SIZE_600)
|
|
|
|
|
zone {
|
|
|
|
|
id
|
|
|
|
|
depth
|
|
|
|
|
label
|
|
|
|
|
}
|
|
|
|
|
}
|
2020-04-23 14:44:06 -07:00
|
|
|
|
|
|
|
|
restrictedZones {
|
|
|
|
|
id
|
|
|
|
|
}
|
2020-04-23 01:08:00 -07:00
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
`,
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
expect(res).toHaveNoErrors();
|
|
|
|
|
expect(res.data).toMatchInlineSnapshot(`
|
|
|
|
|
Object {
|
|
|
|
|
"items": Array [
|
2020-04-23 13:10:42 -07:00
|
|
|
Object {
|
|
|
|
|
"appearanceOn": Object {
|
|
|
|
|
"layers": Array [
|
|
|
|
|
Object {
|
2020-04-23 14:23:46 -07:00
|
|
|
"id": "37128",
|
2020-04-24 21:38:18 -07:00
|
|
|
"imageUrl": "https://impress-asset-images.s3.amazonaws.com/object/000/000/014/14856/600x600.png?v2-1587653266000",
|
2020-04-23 13:10:42 -07:00
|
|
|
"zone": Object {
|
2020-04-23 14:23:46 -07:00
|
|
|
"depth": 30,
|
|
|
|
|
"id": "26",
|
|
|
|
|
"label": "Jacket",
|
2020-04-23 13:10:42 -07:00
|
|
|
},
|
|
|
|
|
},
|
|
|
|
|
],
|
2020-04-23 14:44:06 -07:00
|
|
|
"restrictedZones": Array [
|
|
|
|
|
Object {
|
|
|
|
|
"id": "20",
|
|
|
|
|
},
|
|
|
|
|
Object {
|
|
|
|
|
"id": "22",
|
|
|
|
|
},
|
|
|
|
|
],
|
2020-04-23 13:10:42 -07:00
|
|
|
},
|
2020-04-23 14:23:46 -07:00
|
|
|
"id": "38912",
|
|
|
|
|
"name": "Zafara Agent Robe",
|
2020-04-23 13:10:42 -07:00
|
|
|
},
|
2020-04-23 01:08:00 -07:00
|
|
|
Object {
|
|
|
|
|
"appearanceOn": Object {
|
|
|
|
|
"layers": Array [
|
|
|
|
|
Object {
|
|
|
|
|
"id": "37129",
|
2020-04-24 21:38:18 -07:00
|
|
|
"imageUrl": "https://impress-asset-images.s3.amazonaws.com/object/000/000/014/14857/600x600.png?v2-0",
|
2020-04-23 01:08:00 -07:00
|
|
|
"zone": Object {
|
|
|
|
|
"depth": 44,
|
|
|
|
|
"id": "40",
|
|
|
|
|
"label": "Hat",
|
|
|
|
|
},
|
|
|
|
|
},
|
|
|
|
|
],
|
2020-04-23 14:44:06 -07:00
|
|
|
"restrictedZones": Array [
|
|
|
|
|
Object {
|
|
|
|
|
"id": "37",
|
|
|
|
|
},
|
|
|
|
|
Object {
|
|
|
|
|
"id": "38",
|
|
|
|
|
},
|
|
|
|
|
],
|
2020-04-23 01:08:00 -07:00
|
|
|
},
|
|
|
|
|
"id": "38911",
|
|
|
|
|
"name": "Zafara Agent Hood",
|
|
|
|
|
},
|
|
|
|
|
Object {
|
|
|
|
|
"appearanceOn": Object {
|
|
|
|
|
"layers": Array [
|
|
|
|
|
Object {
|
2020-04-23 14:23:46 -07:00
|
|
|
"id": "30203",
|
2020-04-24 21:38:18 -07:00
|
|
|
"imageUrl": "https://impress-asset-images.s3.amazonaws.com/object/000/000/006/6829/600x600.png?v2-0",
|
2020-04-23 01:08:00 -07:00
|
|
|
"zone": Object {
|
2020-04-23 14:23:46 -07:00
|
|
|
"depth": 3,
|
|
|
|
|
"id": "3",
|
|
|
|
|
"label": "Background",
|
2020-04-23 01:08:00 -07:00
|
|
|
},
|
|
|
|
|
},
|
|
|
|
|
],
|
2020-04-23 14:44:06 -07:00
|
|
|
"restrictedZones": Array [],
|
2020-04-23 01:08:00 -07:00
|
|
|
},
|
2020-04-23 14:23:46 -07:00
|
|
|
"id": "37375",
|
|
|
|
|
"name": "Moon and Stars Background",
|
2020-04-23 01:08:00 -07:00
|
|
|
},
|
|
|
|
|
],
|
|
|
|
|
}
|
|
|
|
|
`);
|
|
|
|
|
expect(queryFn.mock.calls).toMatchInlineSnapshot(`
|
2020-04-22 11:51:36 -07:00
|
|
|
Array [
|
|
|
|
|
Array [
|
2020-04-23 13:10:42 -07:00
|
|
|
"SELECT * FROM items WHERE id IN (?,?,?)",
|
2020-04-23 01:08:00 -07:00
|
|
|
Array [
|
|
|
|
|
"38912",
|
|
|
|
|
"38911",
|
2020-04-23 13:10:42 -07:00
|
|
|
"37375",
|
2020-04-23 01:08:00 -07:00
|
|
|
],
|
|
|
|
|
],
|
|
|
|
|
Array [
|
2020-04-23 13:10:42 -07:00
|
|
|
"SELECT * FROM item_translations WHERE item_id IN (?,?,?) AND locale = \\"en\\"",
|
2020-04-23 01:08:00 -07:00
|
|
|
Array [
|
|
|
|
|
"38912",
|
2020-04-23 14:23:46 -07:00
|
|
|
"38911",
|
|
|
|
|
"37375",
|
2020-04-23 01:08:00 -07:00
|
|
|
],
|
|
|
|
|
],
|
|
|
|
|
Array [
|
2020-04-23 13:10:42 -07:00
|
|
|
"SELECT * FROM pet_types WHERE (species_id = ? AND color_id = ?) OR (species_id = ? AND color_id = ?) OR (species_id = ? AND color_id = ?)",
|
2020-04-23 01:08:00 -07:00
|
|
|
Array [
|
|
|
|
|
"54",
|
|
|
|
|
"75",
|
|
|
|
|
"54",
|
|
|
|
|
"75",
|
2020-04-23 13:10:42 -07:00
|
|
|
"54",
|
|
|
|
|
"75",
|
2020-04-23 01:08:00 -07:00
|
|
|
],
|
|
|
|
|
],
|
|
|
|
|
Array [
|
|
|
|
|
"SELECT sa.*, rel.parent_id FROM swf_assets sa
|
|
|
|
|
INNER JOIN parents_swf_assets rel ON
|
|
|
|
|
rel.parent_type = \\"Item\\" AND
|
|
|
|
|
rel.swf_asset_id = sa.id
|
2020-04-23 13:10:42 -07:00
|
|
|
WHERE (rel.parent_id = ? AND (sa.body_id = ? OR sa.body_id = 0)) OR (rel.parent_id = ? AND (sa.body_id = ? OR sa.body_id = 0)) OR (rel.parent_id = ? AND (sa.body_id = ? OR sa.body_id = 0))",
|
2020-04-23 01:08:00 -07:00
|
|
|
Array [
|
2020-04-23 14:23:46 -07:00
|
|
|
"38912",
|
2020-04-23 13:10:42 -07:00
|
|
|
"180",
|
2020-04-23 01:08:00 -07:00
|
|
|
"38911",
|
|
|
|
|
"180",
|
2020-04-23 14:23:46 -07:00
|
|
|
"37375",
|
2020-04-23 01:08:00 -07:00
|
|
|
"180",
|
|
|
|
|
],
|
2020-04-22 11:51:36 -07:00
|
|
|
],
|
|
|
|
|
Array [
|
2020-04-23 13:10:42 -07:00
|
|
|
"SELECT * FROM zones WHERE id IN (?,?,?)",
|
2020-04-23 01:08:00 -07:00
|
|
|
Array [
|
|
|
|
|
"26",
|
2020-04-23 14:23:46 -07:00
|
|
|
"40",
|
|
|
|
|
"3",
|
2020-04-23 01:08:00 -07:00
|
|
|
],
|
2020-04-22 11:51:36 -07:00
|
|
|
],
|
2020-04-23 01:08:00 -07:00
|
|
|
Array [
|
2020-04-23 13:10:42 -07:00
|
|
|
"SELECT * FROM zone_translations WHERE zone_id IN (?,?,?) AND locale = \\"en\\"",
|
2020-04-23 01:08:00 -07:00
|
|
|
Array [
|
|
|
|
|
"26",
|
2020-04-23 14:23:46 -07:00
|
|
|
"40",
|
|
|
|
|
"3",
|
|
|
|
|
],
|
|
|
|
|
],
|
|
|
|
|
]
|
|
|
|
|
`);
|
|
|
|
|
});
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
describe("PetAppearance", () => {
|
|
|
|
|
it("loads for species and color", async () => {
|
|
|
|
|
const res = await query({
|
|
|
|
|
query: gql`
|
|
|
|
|
query {
|
|
|
|
|
petAppearance(speciesId: "54", colorId: "75") {
|
|
|
|
|
layers {
|
|
|
|
|
id
|
|
|
|
|
imageUrl(size: SIZE_600)
|
|
|
|
|
zone {
|
|
|
|
|
depth
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
`,
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
expect(res).toHaveNoErrors();
|
|
|
|
|
expect(res.data).toMatchInlineSnapshot(`
|
|
|
|
|
Object {
|
|
|
|
|
"petAppearance": Object {
|
|
|
|
|
"layers": Array [
|
|
|
|
|
Object {
|
|
|
|
|
"id": "5995",
|
2020-04-24 21:38:18 -07:00
|
|
|
"imageUrl": "https://impress-asset-images.s3.amazonaws.com/biology/000/000/007/7941/600x600.png?v2-0",
|
2020-04-23 14:23:46 -07:00
|
|
|
"zone": Object {
|
|
|
|
|
"depth": 18,
|
|
|
|
|
},
|
|
|
|
|
},
|
|
|
|
|
Object {
|
|
|
|
|
"id": "5996",
|
2020-04-24 21:38:18 -07:00
|
|
|
"imageUrl": "https://impress-asset-images.s3.amazonaws.com/biology/000/000/007/7942/600x600.png?v2-0",
|
2020-04-23 14:23:46 -07:00
|
|
|
"zone": Object {
|
|
|
|
|
"depth": 7,
|
|
|
|
|
},
|
|
|
|
|
},
|
|
|
|
|
Object {
|
|
|
|
|
"id": "6000",
|
2020-04-24 21:38:18 -07:00
|
|
|
"imageUrl": "https://impress-asset-images.s3.amazonaws.com/biology/000/000/007/7946/600x600.png?v2-0",
|
2020-04-23 14:23:46 -07:00
|
|
|
"zone": Object {
|
|
|
|
|
"depth": 40,
|
|
|
|
|
},
|
|
|
|
|
},
|
|
|
|
|
Object {
|
|
|
|
|
"id": "16467",
|
2020-04-24 21:38:18 -07:00
|
|
|
"imageUrl": "https://impress-asset-images.s3.amazonaws.com/biology/000/000/024/24008/600x600.png?v2-0",
|
2020-04-23 14:23:46 -07:00
|
|
|
"zone": Object {
|
|
|
|
|
"depth": 34,
|
|
|
|
|
},
|
|
|
|
|
},
|
|
|
|
|
Object {
|
|
|
|
|
"id": "19549",
|
2020-04-24 21:38:18 -07:00
|
|
|
"imageUrl": "https://impress-asset-images.s3.amazonaws.com/biology/000/000/028/28548/600x600.png?v2-1345719457000",
|
2020-04-23 14:23:46 -07:00
|
|
|
"zone": Object {
|
|
|
|
|
"depth": 37,
|
|
|
|
|
},
|
|
|
|
|
},
|
|
|
|
|
Object {
|
|
|
|
|
"id": "19550",
|
2020-04-24 21:38:18 -07:00
|
|
|
"imageUrl": "https://impress-asset-images.s3.amazonaws.com/biology/000/000/028/28549/600x600.png?v2-0",
|
2020-04-23 14:23:46 -07:00
|
|
|
"zone": Object {
|
|
|
|
|
"depth": 38,
|
|
|
|
|
},
|
|
|
|
|
},
|
|
|
|
|
Object {
|
|
|
|
|
"id": "163528",
|
2020-04-24 21:38:18 -07:00
|
|
|
"imageUrl": "https://impress-asset-images.s3.amazonaws.com/biology/000/000/028/28549/600x600.png?v2-1326455337000",
|
2020-04-23 14:23:46 -07:00
|
|
|
"zone": Object {
|
|
|
|
|
"depth": 38,
|
|
|
|
|
},
|
|
|
|
|
},
|
|
|
|
|
],
|
|
|
|
|
},
|
|
|
|
|
}
|
|
|
|
|
`);
|
|
|
|
|
expect(queryFn.mock.calls).toMatchInlineSnapshot(`
|
|
|
|
|
Array [
|
|
|
|
|
Array [
|
|
|
|
|
"SELECT * FROM pet_types WHERE (species_id = ? AND color_id = ?)",
|
|
|
|
|
Array [
|
|
|
|
|
"54",
|
|
|
|
|
"75",
|
|
|
|
|
],
|
|
|
|
|
],
|
|
|
|
|
Array [
|
|
|
|
|
"SELECT * FROM pet_states WHERE pet_type_id IN (?)",
|
|
|
|
|
Array [
|
|
|
|
|
"2",
|
|
|
|
|
],
|
|
|
|
|
],
|
|
|
|
|
Array [
|
|
|
|
|
"SELECT sa.*, rel.parent_id FROM swf_assets sa
|
|
|
|
|
INNER JOIN parents_swf_assets rel ON
|
|
|
|
|
rel.parent_type = \\"PetState\\" AND
|
|
|
|
|
rel.swf_asset_id = sa.id
|
|
|
|
|
WHERE rel.parent_id IN (?)",
|
|
|
|
|
Array [
|
|
|
|
|
"2",
|
|
|
|
|
],
|
|
|
|
|
],
|
|
|
|
|
Array [
|
|
|
|
|
"SELECT * FROM zones WHERE id IN (?,?,?,?,?,?)",
|
|
|
|
|
Array [
|
|
|
|
|
"15",
|
|
|
|
|
"5",
|
|
|
|
|
"37",
|
|
|
|
|
"30",
|
|
|
|
|
"33",
|
|
|
|
|
"34",
|
2020-04-23 01:08:00 -07:00
|
|
|
],
|
|
|
|
|
],
|
|
|
|
|
]
|
|
|
|
|
`);
|
|
|
|
|
});
|
|
|
|
|
});
|
|
|
|
|
|
2020-04-24 21:17:03 -07:00
|
|
|
describe("Search", () => {
|
2020-04-25 00:43:01 -07:00
|
|
|
it("loads Neopian Times items", async () => {
|
2020-04-24 21:17:03 -07:00
|
|
|
const res = await query({
|
|
|
|
|
query: gql`
|
|
|
|
|
query {
|
2020-04-25 00:43:01 -07:00
|
|
|
itemSearch(query: "Neopian Times") {
|
2020-04-25 01:55:48 -07:00
|
|
|
query
|
|
|
|
|
items {
|
|
|
|
|
id
|
|
|
|
|
name
|
|
|
|
|
}
|
2020-04-24 21:17:03 -07:00
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
`,
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
expect(res).toHaveNoErrors();
|
|
|
|
|
expect(res.data).toMatchInlineSnapshot(`
|
|
|
|
|
Object {
|
2020-04-25 01:55:48 -07:00
|
|
|
"itemSearch": Object {
|
|
|
|
|
"items": Array [
|
|
|
|
|
Object {
|
|
|
|
|
"id": "40431",
|
|
|
|
|
"name": "Neopian Times Background",
|
|
|
|
|
},
|
|
|
|
|
Object {
|
|
|
|
|
"id": "59391",
|
|
|
|
|
"name": "Neopian Times Eyrie Hat",
|
|
|
|
|
},
|
|
|
|
|
Object {
|
|
|
|
|
"id": "59392",
|
|
|
|
|
"name": "Neopian Times Eyrie Shirt and Vest",
|
|
|
|
|
},
|
|
|
|
|
Object {
|
|
|
|
|
"id": "59394",
|
|
|
|
|
"name": "Neopian Times Eyrie Shoes",
|
|
|
|
|
},
|
|
|
|
|
Object {
|
|
|
|
|
"id": "59393",
|
|
|
|
|
"name": "Neopian Times Eyrie Trousers",
|
|
|
|
|
},
|
|
|
|
|
Object {
|
|
|
|
|
"id": "59390",
|
|
|
|
|
"name": "Neopian Times Eyries Paper",
|
|
|
|
|
},
|
|
|
|
|
Object {
|
|
|
|
|
"id": "51098",
|
|
|
|
|
"name": "Neopian Times Writing Quill",
|
|
|
|
|
},
|
|
|
|
|
Object {
|
|
|
|
|
"id": "61101",
|
|
|
|
|
"name": "Neopian Times Zafara Handkerchief",
|
|
|
|
|
},
|
|
|
|
|
Object {
|
|
|
|
|
"id": "61100",
|
|
|
|
|
"name": "Neopian Times Zafara Hat",
|
|
|
|
|
},
|
|
|
|
|
Object {
|
|
|
|
|
"id": "61102",
|
|
|
|
|
"name": "Neopian Times Zafara Shirt and Vest",
|
|
|
|
|
},
|
|
|
|
|
Object {
|
|
|
|
|
"id": "61104",
|
|
|
|
|
"name": "Neopian Times Zafara Shoes",
|
|
|
|
|
},
|
|
|
|
|
Object {
|
|
|
|
|
"id": "61103",
|
|
|
|
|
"name": "Neopian Times Zafara Trousers",
|
|
|
|
|
},
|
|
|
|
|
],
|
|
|
|
|
"query": "Neopian Times",
|
|
|
|
|
},
|
2020-04-24 21:17:03 -07:00
|
|
|
}
|
|
|
|
|
`);
|
|
|
|
|
expect(queryFn.mock.calls).toMatchInlineSnapshot(`
|
|
|
|
|
Array [
|
|
|
|
|
Array [
|
2020-04-25 00:43:01 -07:00
|
|
|
"SELECT items.*, t.name FROM items
|
2020-04-24 21:17:03 -07:00
|
|
|
INNER JOIN item_translations t ON t.item_id = items.id
|
2020-04-25 00:43:01 -07:00
|
|
|
WHERE t.name LIKE ? AND t.locale=\\"en\\"
|
2020-04-24 21:17:03 -07:00
|
|
|
ORDER BY t.name
|
|
|
|
|
LIMIT 30",
|
|
|
|
|
Array [
|
2020-04-25 00:43:01 -07:00
|
|
|
"%Neopian Times%",
|
|
|
|
|
],
|
|
|
|
|
],
|
|
|
|
|
]
|
|
|
|
|
`);
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
it("loads Neopian Times items that fit the Starry Zafara", async () => {
|
|
|
|
|
const res = await query({
|
|
|
|
|
query: gql`
|
|
|
|
|
query {
|
|
|
|
|
itemSearchToFit(
|
|
|
|
|
query: "Neopian Times"
|
|
|
|
|
speciesId: "54"
|
|
|
|
|
colorId: "75"
|
|
|
|
|
) {
|
2020-04-25 01:55:48 -07:00
|
|
|
query
|
|
|
|
|
items {
|
|
|
|
|
id
|
|
|
|
|
name
|
|
|
|
|
}
|
2020-04-25 00:43:01 -07:00
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
`,
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
expect(res).toHaveNoErrors();
|
|
|
|
|
expect(res.data).toMatchInlineSnapshot(`
|
|
|
|
|
Object {
|
2020-04-25 01:55:48 -07:00
|
|
|
"itemSearchToFit": Object {
|
|
|
|
|
"items": Array [
|
|
|
|
|
Object {
|
|
|
|
|
"id": "40431",
|
|
|
|
|
"name": "Neopian Times Background",
|
|
|
|
|
},
|
|
|
|
|
Object {
|
|
|
|
|
"id": "51098",
|
|
|
|
|
"name": "Neopian Times Writing Quill",
|
|
|
|
|
},
|
|
|
|
|
Object {
|
|
|
|
|
"id": "61101",
|
|
|
|
|
"name": "Neopian Times Zafara Handkerchief",
|
|
|
|
|
},
|
|
|
|
|
Object {
|
|
|
|
|
"id": "61100",
|
|
|
|
|
"name": "Neopian Times Zafara Hat",
|
|
|
|
|
},
|
|
|
|
|
Object {
|
|
|
|
|
"id": "61102",
|
|
|
|
|
"name": "Neopian Times Zafara Shirt and Vest",
|
|
|
|
|
},
|
|
|
|
|
Object {
|
|
|
|
|
"id": "61104",
|
|
|
|
|
"name": "Neopian Times Zafara Shoes",
|
|
|
|
|
},
|
|
|
|
|
Object {
|
|
|
|
|
"id": "61103",
|
|
|
|
|
"name": "Neopian Times Zafara Trousers",
|
|
|
|
|
},
|
|
|
|
|
],
|
|
|
|
|
"query": "Neopian Times",
|
|
|
|
|
},
|
2020-04-25 00:43:01 -07:00
|
|
|
}
|
|
|
|
|
`);
|
|
|
|
|
expect(queryFn.mock.calls).toMatchInlineSnapshot(`
|
|
|
|
|
Array [
|
|
|
|
|
Array [
|
|
|
|
|
"SELECT * FROM pet_types WHERE (species_id = ? AND color_id = ?)",
|
|
|
|
|
Array [
|
|
|
|
|
"54",
|
|
|
|
|
"75",
|
2020-04-24 21:17:03 -07:00
|
|
|
],
|
|
|
|
|
],
|
|
|
|
|
Array [
|
2020-04-25 00:43:01 -07:00
|
|
|
"SELECT items.*, t.name FROM items
|
|
|
|
|
INNER JOIN item_translations t ON t.item_id = items.id
|
|
|
|
|
INNER JOIN parents_swf_assets rel
|
|
|
|
|
ON rel.parent_type = \\"Item\\" AND rel.parent_id = items.id
|
|
|
|
|
INNER JOIN swf_assets ON rel.swf_asset_id = swf_assets.id
|
|
|
|
|
WHERE t.name LIKE ? AND t.locale=\\"en\\" AND
|
|
|
|
|
(swf_assets.body_id = ? OR swf_assets.body_id = 0)
|
|
|
|
|
ORDER BY t.name
|
2020-04-25 01:55:48 -07:00
|
|
|
LIMIT ? OFFSET ?",
|
2020-04-24 21:17:03 -07:00
|
|
|
Array [
|
2020-04-25 00:43:01 -07:00
|
|
|
"%Neopian Times%",
|
|
|
|
|
"180",
|
2020-04-25 01:55:48 -07:00
|
|
|
30,
|
|
|
|
|
0,
|
|
|
|
|
],
|
|
|
|
|
],
|
|
|
|
|
]
|
|
|
|
|
`);
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
it("loads the first 10 hats that fit the Starry Zafara", async () => {
|
|
|
|
|
const res = await query({
|
|
|
|
|
query: gql`
|
|
|
|
|
query {
|
|
|
|
|
itemSearchToFit(
|
|
|
|
|
query: "hat"
|
|
|
|
|
speciesId: "54"
|
|
|
|
|
colorId: "75"
|
|
|
|
|
offset: 0
|
|
|
|
|
limit: 10
|
|
|
|
|
) {
|
|
|
|
|
query
|
|
|
|
|
items {
|
|
|
|
|
id
|
|
|
|
|
name
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
`,
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
expect(res).toHaveNoErrors();
|
|
|
|
|
expect(res.data).toMatchInlineSnapshot(`
|
|
|
|
|
Object {
|
|
|
|
|
"itemSearchToFit": Object {
|
|
|
|
|
"items": Array [
|
|
|
|
|
Object {
|
|
|
|
|
"id": "74967",
|
|
|
|
|
"name": "17th Birthday Party Hat",
|
|
|
|
|
},
|
|
|
|
|
Object {
|
|
|
|
|
"id": "49026",
|
|
|
|
|
"name": "Abominable Snowman Hat",
|
|
|
|
|
},
|
|
|
|
|
Object {
|
|
|
|
|
"id": "67242",
|
|
|
|
|
"name": "Accessories Shop Wig and Hat",
|
|
|
|
|
},
|
|
|
|
|
Object {
|
|
|
|
|
"id": "67242",
|
|
|
|
|
"name": "Accessories Shop Wig and Hat",
|
|
|
|
|
},
|
|
|
|
|
Object {
|
|
|
|
|
"id": "64177",
|
|
|
|
|
"name": "Acorn Hat",
|
|
|
|
|
},
|
|
|
|
|
Object {
|
|
|
|
|
"id": "69995",
|
|
|
|
|
"name": "Adventure in Pastel Hat and Wig",
|
|
|
|
|
},
|
|
|
|
|
Object {
|
|
|
|
|
"id": "69995",
|
|
|
|
|
"name": "Adventure in Pastel Hat and Wig",
|
|
|
|
|
},
|
|
|
|
|
Object {
|
|
|
|
|
"id": "62375",
|
|
|
|
|
"name": "Altador Cup Trophy Hat",
|
|
|
|
|
},
|
|
|
|
|
Object {
|
|
|
|
|
"id": "56654",
|
|
|
|
|
"name": "Altador Team Hat",
|
|
|
|
|
},
|
|
|
|
|
Object {
|
|
|
|
|
"id": "62322",
|
|
|
|
|
"name": "Altador Team Jester Hat",
|
|
|
|
|
},
|
|
|
|
|
],
|
|
|
|
|
"query": "hat",
|
|
|
|
|
},
|
|
|
|
|
}
|
|
|
|
|
`);
|
|
|
|
|
expect(queryFn.mock.calls).toMatchInlineSnapshot(`
|
|
|
|
|
Array [
|
|
|
|
|
Array [
|
|
|
|
|
"SELECT * FROM pet_types WHERE (species_id = ? AND color_id = ?)",
|
|
|
|
|
Array [
|
|
|
|
|
"54",
|
|
|
|
|
"75",
|
|
|
|
|
],
|
|
|
|
|
],
|
|
|
|
|
Array [
|
|
|
|
|
"SELECT items.*, t.name FROM items
|
|
|
|
|
INNER JOIN item_translations t ON t.item_id = items.id
|
|
|
|
|
INNER JOIN parents_swf_assets rel
|
|
|
|
|
ON rel.parent_type = \\"Item\\" AND rel.parent_id = items.id
|
|
|
|
|
INNER JOIN swf_assets ON rel.swf_asset_id = swf_assets.id
|
|
|
|
|
WHERE t.name LIKE ? AND t.locale=\\"en\\" AND
|
|
|
|
|
(swf_assets.body_id = ? OR swf_assets.body_id = 0)
|
|
|
|
|
ORDER BY t.name
|
|
|
|
|
LIMIT ? OFFSET ?",
|
|
|
|
|
Array [
|
|
|
|
|
"%hat%",
|
|
|
|
|
"180",
|
|
|
|
|
10,
|
|
|
|
|
0,
|
|
|
|
|
],
|
|
|
|
|
],
|
|
|
|
|
]
|
|
|
|
|
`);
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
it("loads the next 10 hats that fit the Starry Zafara", async () => {
|
|
|
|
|
const res = await query({
|
|
|
|
|
query: gql`
|
|
|
|
|
query {
|
|
|
|
|
itemSearchToFit(
|
|
|
|
|
query: "hat"
|
|
|
|
|
speciesId: "54"
|
|
|
|
|
colorId: "75"
|
|
|
|
|
offset: 10
|
|
|
|
|
limit: 10
|
|
|
|
|
) {
|
|
|
|
|
query
|
|
|
|
|
items {
|
|
|
|
|
id
|
|
|
|
|
name
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
`,
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
expect(res).toHaveNoErrors();
|
|
|
|
|
expect(res.data).toMatchInlineSnapshot(`
|
|
|
|
|
Object {
|
|
|
|
|
"itemSearchToFit": Object {
|
|
|
|
|
"items": Array [
|
|
|
|
|
Object {
|
|
|
|
|
"id": "58733",
|
|
|
|
|
"name": "Apple Bobbing Bart Hat",
|
|
|
|
|
},
|
|
|
|
|
Object {
|
|
|
|
|
"id": "80401",
|
|
|
|
|
"name": "Aurricks Finest Hat",
|
|
|
|
|
},
|
|
|
|
|
Object {
|
|
|
|
|
"id": "80401",
|
|
|
|
|
"name": "Aurricks Finest Hat",
|
|
|
|
|
},
|
|
|
|
|
Object {
|
|
|
|
|
"id": "50168",
|
|
|
|
|
"name": "Babaa Hat",
|
|
|
|
|
},
|
|
|
|
|
Object {
|
|
|
|
|
"id": "78311",
|
|
|
|
|
"name": "Backwards Hat and Wig",
|
|
|
|
|
},
|
|
|
|
|
Object {
|
|
|
|
|
"id": "78311",
|
|
|
|
|
"name": "Backwards Hat and Wig",
|
|
|
|
|
},
|
|
|
|
|
Object {
|
|
|
|
|
"id": "66653",
|
|
|
|
|
"name": "Bagel Hat Wig",
|
|
|
|
|
},
|
|
|
|
|
Object {
|
|
|
|
|
"id": "66653",
|
|
|
|
|
"name": "Bagel Hat Wig",
|
|
|
|
|
},
|
|
|
|
|
Object {
|
|
|
|
|
"id": "51366",
|
|
|
|
|
"name": "Balloon Sculpture Hat",
|
|
|
|
|
},
|
|
|
|
|
Object {
|
|
|
|
|
"id": "51366",
|
|
|
|
|
"name": "Balloon Sculpture Hat",
|
|
|
|
|
},
|
|
|
|
|
],
|
|
|
|
|
"query": "hat",
|
|
|
|
|
},
|
|
|
|
|
}
|
|
|
|
|
`);
|
|
|
|
|
expect(queryFn.mock.calls).toMatchInlineSnapshot(`
|
|
|
|
|
Array [
|
|
|
|
|
Array [
|
|
|
|
|
"SELECT * FROM pet_types WHERE (species_id = ? AND color_id = ?)",
|
|
|
|
|
Array [
|
|
|
|
|
"54",
|
|
|
|
|
"75",
|
|
|
|
|
],
|
|
|
|
|
],
|
|
|
|
|
Array [
|
|
|
|
|
"SELECT items.*, t.name FROM items
|
|
|
|
|
INNER JOIN item_translations t ON t.item_id = items.id
|
|
|
|
|
INNER JOIN parents_swf_assets rel
|
|
|
|
|
ON rel.parent_type = \\"Item\\" AND rel.parent_id = items.id
|
|
|
|
|
INNER JOIN swf_assets ON rel.swf_asset_id = swf_assets.id
|
|
|
|
|
WHERE t.name LIKE ? AND t.locale=\\"en\\" AND
|
|
|
|
|
(swf_assets.body_id = ? OR swf_assets.body_id = 0)
|
|
|
|
|
ORDER BY t.name
|
|
|
|
|
LIMIT ? OFFSET ?",
|
|
|
|
|
Array [
|
|
|
|
|
"%hat%",
|
|
|
|
|
"180",
|
|
|
|
|
10,
|
|
|
|
|
10,
|
2020-04-24 21:17:03 -07:00
|
|
|
],
|
|
|
|
|
],
|
|
|
|
|
]
|
|
|
|
|
`);
|
|
|
|
|
});
|
|
|
|
|
});
|
|
|
|
|
|
2020-04-25 03:42:05 -07:00
|
|
|
describe("Species", () => {
|
|
|
|
|
it("loads all species", async () => {
|
|
|
|
|
const res = await query({
|
|
|
|
|
query: gql`
|
|
|
|
|
query {
|
|
|
|
|
allSpecies {
|
|
|
|
|
id
|
|
|
|
|
name
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
`,
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
expect(res).toHaveNoErrors();
|
|
|
|
|
expect(res.data).toMatchInlineSnapshot(`
|
|
|
|
|
Object {
|
|
|
|
|
"allSpecies": Array [
|
|
|
|
|
Object {
|
|
|
|
|
"id": "1",
|
|
|
|
|
"name": "acara",
|
|
|
|
|
},
|
|
|
|
|
Object {
|
|
|
|
|
"id": "2",
|
|
|
|
|
"name": "aisha",
|
|
|
|
|
},
|
|
|
|
|
Object {
|
|
|
|
|
"id": "3",
|
|
|
|
|
"name": "blumaroo",
|
|
|
|
|
},
|
|
|
|
|
Object {
|
|
|
|
|
"id": "4",
|
|
|
|
|
"name": "bori",
|
|
|
|
|
},
|
|
|
|
|
Object {
|
|
|
|
|
"id": "5",
|
|
|
|
|
"name": "bruce",
|
|
|
|
|
},
|
|
|
|
|
Object {
|
|
|
|
|
"id": "6",
|
|
|
|
|
"name": "buzz",
|
|
|
|
|
},
|
|
|
|
|
Object {
|
|
|
|
|
"id": "7",
|
|
|
|
|
"name": "chia",
|
|
|
|
|
},
|
|
|
|
|
Object {
|
|
|
|
|
"id": "8",
|
|
|
|
|
"name": "chomby",
|
|
|
|
|
},
|
|
|
|
|
Object {
|
|
|
|
|
"id": "9",
|
|
|
|
|
"name": "cybunny",
|
|
|
|
|
},
|
|
|
|
|
Object {
|
|
|
|
|
"id": "10",
|
|
|
|
|
"name": "draik",
|
|
|
|
|
},
|
|
|
|
|
Object {
|
|
|
|
|
"id": "11",
|
|
|
|
|
"name": "elephante",
|
|
|
|
|
},
|
|
|
|
|
Object {
|
|
|
|
|
"id": "12",
|
|
|
|
|
"name": "eyrie",
|
|
|
|
|
},
|
|
|
|
|
Object {
|
|
|
|
|
"id": "13",
|
|
|
|
|
"name": "flotsam",
|
|
|
|
|
},
|
|
|
|
|
Object {
|
|
|
|
|
"id": "14",
|
|
|
|
|
"name": "gelert",
|
|
|
|
|
},
|
|
|
|
|
Object {
|
|
|
|
|
"id": "15",
|
|
|
|
|
"name": "gnorbu",
|
|
|
|
|
},
|
|
|
|
|
Object {
|
|
|
|
|
"id": "16",
|
|
|
|
|
"name": "grarrl",
|
|
|
|
|
},
|
|
|
|
|
Object {
|
|
|
|
|
"id": "17",
|
|
|
|
|
"name": "grundo",
|
|
|
|
|
},
|
|
|
|
|
Object {
|
|
|
|
|
"id": "18",
|
|
|
|
|
"name": "hissi",
|
|
|
|
|
},
|
|
|
|
|
Object {
|
|
|
|
|
"id": "19",
|
|
|
|
|
"name": "ixi",
|
|
|
|
|
},
|
|
|
|
|
Object {
|
|
|
|
|
"id": "20",
|
|
|
|
|
"name": "jetsam",
|
|
|
|
|
},
|
|
|
|
|
Object {
|
|
|
|
|
"id": "21",
|
|
|
|
|
"name": "jubjub",
|
|
|
|
|
},
|
|
|
|
|
Object {
|
|
|
|
|
"id": "22",
|
|
|
|
|
"name": "kacheek",
|
|
|
|
|
},
|
|
|
|
|
Object {
|
|
|
|
|
"id": "23",
|
|
|
|
|
"name": "kau",
|
|
|
|
|
},
|
|
|
|
|
Object {
|
|
|
|
|
"id": "24",
|
|
|
|
|
"name": "kiko",
|
|
|
|
|
},
|
|
|
|
|
Object {
|
|
|
|
|
"id": "25",
|
|
|
|
|
"name": "koi",
|
|
|
|
|
},
|
|
|
|
|
Object {
|
|
|
|
|
"id": "26",
|
|
|
|
|
"name": "korbat",
|
|
|
|
|
},
|
|
|
|
|
Object {
|
|
|
|
|
"id": "27",
|
|
|
|
|
"name": "kougra",
|
|
|
|
|
},
|
|
|
|
|
Object {
|
|
|
|
|
"id": "28",
|
|
|
|
|
"name": "krawk",
|
|
|
|
|
},
|
|
|
|
|
Object {
|
|
|
|
|
"id": "29",
|
|
|
|
|
"name": "kyrii",
|
|
|
|
|
},
|
|
|
|
|
Object {
|
|
|
|
|
"id": "30",
|
|
|
|
|
"name": "lenny",
|
|
|
|
|
},
|
|
|
|
|
Object {
|
|
|
|
|
"id": "31",
|
|
|
|
|
"name": "lupe",
|
|
|
|
|
},
|
|
|
|
|
Object {
|
|
|
|
|
"id": "32",
|
|
|
|
|
"name": "lutari",
|
|
|
|
|
},
|
|
|
|
|
Object {
|
|
|
|
|
"id": "33",
|
|
|
|
|
"name": "meerca",
|
|
|
|
|
},
|
|
|
|
|
Object {
|
|
|
|
|
"id": "34",
|
|
|
|
|
"name": "moehog",
|
|
|
|
|
},
|
|
|
|
|
Object {
|
|
|
|
|
"id": "35",
|
|
|
|
|
"name": "mynci",
|
|
|
|
|
},
|
|
|
|
|
Object {
|
|
|
|
|
"id": "36",
|
|
|
|
|
"name": "nimmo",
|
|
|
|
|
},
|
|
|
|
|
Object {
|
|
|
|
|
"id": "37",
|
|
|
|
|
"name": "ogrin",
|
|
|
|
|
},
|
|
|
|
|
Object {
|
|
|
|
|
"id": "38",
|
|
|
|
|
"name": "peophin",
|
|
|
|
|
},
|
|
|
|
|
Object {
|
|
|
|
|
"id": "39",
|
|
|
|
|
"name": "poogle",
|
|
|
|
|
},
|
|
|
|
|
Object {
|
|
|
|
|
"id": "40",
|
|
|
|
|
"name": "pteri",
|
|
|
|
|
},
|
|
|
|
|
Object {
|
|
|
|
|
"id": "41",
|
|
|
|
|
"name": "quiggle",
|
|
|
|
|
},
|
|
|
|
|
Object {
|
|
|
|
|
"id": "42",
|
|
|
|
|
"name": "ruki",
|
|
|
|
|
},
|
|
|
|
|
Object {
|
|
|
|
|
"id": "43",
|
|
|
|
|
"name": "scorchio",
|
|
|
|
|
},
|
|
|
|
|
Object {
|
|
|
|
|
"id": "44",
|
|
|
|
|
"name": "shoyru",
|
|
|
|
|
},
|
|
|
|
|
Object {
|
|
|
|
|
"id": "45",
|
|
|
|
|
"name": "skeith",
|
|
|
|
|
},
|
|
|
|
|
Object {
|
|
|
|
|
"id": "46",
|
|
|
|
|
"name": "techo",
|
|
|
|
|
},
|
|
|
|
|
Object {
|
|
|
|
|
"id": "47",
|
|
|
|
|
"name": "tonu",
|
|
|
|
|
},
|
|
|
|
|
Object {
|
|
|
|
|
"id": "48",
|
|
|
|
|
"name": "tuskaninny",
|
|
|
|
|
},
|
|
|
|
|
Object {
|
|
|
|
|
"id": "49",
|
|
|
|
|
"name": "uni",
|
|
|
|
|
},
|
|
|
|
|
Object {
|
|
|
|
|
"id": "50",
|
|
|
|
|
"name": "usul",
|
|
|
|
|
},
|
|
|
|
|
Object {
|
|
|
|
|
"id": "51",
|
|
|
|
|
"name": "wocky",
|
|
|
|
|
},
|
|
|
|
|
Object {
|
|
|
|
|
"id": "52",
|
|
|
|
|
"name": "xweetok",
|
|
|
|
|
},
|
|
|
|
|
Object {
|
|
|
|
|
"id": "53",
|
|
|
|
|
"name": "yurble",
|
|
|
|
|
},
|
|
|
|
|
Object {
|
|
|
|
|
"id": "54",
|
|
|
|
|
"name": "zafara",
|
|
|
|
|
},
|
|
|
|
|
Object {
|
|
|
|
|
"id": "55",
|
|
|
|
|
"name": "vandagyre",
|
|
|
|
|
},
|
|
|
|
|
],
|
|
|
|
|
}
|
|
|
|
|
`);
|
|
|
|
|
expect(queryFn.mock.calls).toMatchInlineSnapshot(`
|
|
|
|
|
Array [
|
|
|
|
|
Array [
|
|
|
|
|
"SELECT * FROM species",
|
|
|
|
|
],
|
|
|
|
|
Array [
|
|
|
|
|
"SELECT * FROM species_translations
|
|
|
|
|
WHERE species_id IN (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?) AND locale = \\"en\\"",
|
|
|
|
|
Array [
|
|
|
|
|
"1",
|
|
|
|
|
"2",
|
|
|
|
|
"3",
|
|
|
|
|
"4",
|
|
|
|
|
"5",
|
|
|
|
|
"6",
|
|
|
|
|
"7",
|
|
|
|
|
"8",
|
|
|
|
|
"9",
|
|
|
|
|
"10",
|
|
|
|
|
"11",
|
|
|
|
|
"12",
|
|
|
|
|
"13",
|
|
|
|
|
"14",
|
|
|
|
|
"15",
|
|
|
|
|
"16",
|
|
|
|
|
"17",
|
|
|
|
|
"18",
|
|
|
|
|
"19",
|
|
|
|
|
"20",
|
|
|
|
|
"21",
|
|
|
|
|
"22",
|
|
|
|
|
"23",
|
|
|
|
|
"24",
|
|
|
|
|
"25",
|
|
|
|
|
"26",
|
|
|
|
|
"27",
|
|
|
|
|
"28",
|
|
|
|
|
"29",
|
|
|
|
|
"30",
|
|
|
|
|
"31",
|
|
|
|
|
"32",
|
|
|
|
|
"33",
|
|
|
|
|
"34",
|
|
|
|
|
"35",
|
|
|
|
|
"36",
|
|
|
|
|
"37",
|
|
|
|
|
"38",
|
|
|
|
|
"39",
|
|
|
|
|
"40",
|
|
|
|
|
"41",
|
|
|
|
|
"42",
|
|
|
|
|
"43",
|
|
|
|
|
"44",
|
|
|
|
|
"45",
|
|
|
|
|
"46",
|
|
|
|
|
"47",
|
|
|
|
|
"48",
|
|
|
|
|
"49",
|
|
|
|
|
"50",
|
|
|
|
|
"51",
|
|
|
|
|
"52",
|
|
|
|
|
"53",
|
|
|
|
|
"54",
|
|
|
|
|
"55",
|
|
|
|
|
],
|
|
|
|
|
],
|
|
|
|
|
]
|
|
|
|
|
`);
|
|
|
|
|
});
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
describe("Color", () => {
|
|
|
|
|
it("loads all colors", async () => {
|
|
|
|
|
const res = await query({
|
|
|
|
|
query: gql`
|
|
|
|
|
query {
|
|
|
|
|
allColors {
|
|
|
|
|
id
|
|
|
|
|
name
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
`,
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
expect(res).toHaveNoErrors();
|
|
|
|
|
expect(res.data).toMatchInlineSnapshot(`
|
|
|
|
|
Object {
|
|
|
|
|
"allColors": Array [
|
|
|
|
|
Object {
|
|
|
|
|
"id": "-1",
|
|
|
|
|
"name": "nebula",
|
|
|
|
|
},
|
|
|
|
|
Object {
|
|
|
|
|
"id": "1",
|
|
|
|
|
"name": "alien",
|
|
|
|
|
},
|
|
|
|
|
Object {
|
|
|
|
|
"id": "2",
|
|
|
|
|
"name": "apple",
|
|
|
|
|
},
|
|
|
|
|
Object {
|
|
|
|
|
"id": "3",
|
|
|
|
|
"name": "asparagus",
|
|
|
|
|
},
|
|
|
|
|
Object {
|
|
|
|
|
"id": "4",
|
|
|
|
|
"name": "aubergine",
|
|
|
|
|
},
|
|
|
|
|
Object {
|
|
|
|
|
"id": "5",
|
|
|
|
|
"name": "avocado",
|
|
|
|
|
},
|
|
|
|
|
Object {
|
|
|
|
|
"id": "6",
|
|
|
|
|
"name": "baby",
|
|
|
|
|
},
|
|
|
|
|
Object {
|
|
|
|
|
"id": "7",
|
|
|
|
|
"name": "biscuit",
|
|
|
|
|
},
|
|
|
|
|
Object {
|
|
|
|
|
"id": "8",
|
|
|
|
|
"name": "blue",
|
|
|
|
|
},
|
|
|
|
|
Object {
|
|
|
|
|
"id": "9",
|
|
|
|
|
"name": "blueberry",
|
|
|
|
|
},
|
|
|
|
|
Object {
|
|
|
|
|
"id": "10",
|
|
|
|
|
"name": "brown",
|
|
|
|
|
},
|
|
|
|
|
Object {
|
|
|
|
|
"id": "11",
|
|
|
|
|
"name": "camouflage",
|
|
|
|
|
},
|
|
|
|
|
Object {
|
|
|
|
|
"id": "12",
|
|
|
|
|
"name": "carrot",
|
|
|
|
|
},
|
|
|
|
|
Object {
|
|
|
|
|
"id": "13",
|
|
|
|
|
"name": "checkered",
|
|
|
|
|
},
|
|
|
|
|
Object {
|
|
|
|
|
"id": "14",
|
|
|
|
|
"name": "chocolate",
|
|
|
|
|
},
|
|
|
|
|
Object {
|
|
|
|
|
"id": "15",
|
|
|
|
|
"name": "chokato",
|
|
|
|
|
},
|
|
|
|
|
Object {
|
|
|
|
|
"id": "16",
|
|
|
|
|
"name": "christmas",
|
|
|
|
|
},
|
|
|
|
|
Object {
|
|
|
|
|
"id": "17",
|
|
|
|
|
"name": "clay",
|
|
|
|
|
},
|
|
|
|
|
Object {
|
|
|
|
|
"id": "18",
|
|
|
|
|
"name": "cloud",
|
|
|
|
|
},
|
|
|
|
|
Object {
|
|
|
|
|
"id": "19",
|
|
|
|
|
"name": "coconut",
|
|
|
|
|
},
|
|
|
|
|
Object {
|
|
|
|
|
"id": "20",
|
|
|
|
|
"name": "custard",
|
|
|
|
|
},
|
|
|
|
|
Object {
|
|
|
|
|
"id": "21",
|
|
|
|
|
"name": "darigan",
|
|
|
|
|
},
|
|
|
|
|
Object {
|
|
|
|
|
"id": "22",
|
|
|
|
|
"name": "desert",
|
|
|
|
|
},
|
|
|
|
|
Object {
|
|
|
|
|
"id": "23",
|
|
|
|
|
"name": "disco",
|
|
|
|
|
},
|
|
|
|
|
Object {
|
|
|
|
|
"id": "24",
|
|
|
|
|
"name": "durian",
|
|
|
|
|
},
|
|
|
|
|
Object {
|
|
|
|
|
"id": "25",
|
|
|
|
|
"name": "electric",
|
|
|
|
|
},
|
|
|
|
|
Object {
|
|
|
|
|
"id": "26",
|
|
|
|
|
"name": "faerie",
|
|
|
|
|
},
|
|
|
|
|
Object {
|
|
|
|
|
"id": "27",
|
|
|
|
|
"name": "fire",
|
|
|
|
|
},
|
|
|
|
|
Object {
|
|
|
|
|
"id": "28",
|
|
|
|
|
"name": "garlic",
|
|
|
|
|
},
|
|
|
|
|
Object {
|
|
|
|
|
"id": "29",
|
|
|
|
|
"name": "ghost",
|
|
|
|
|
},
|
|
|
|
|
Object {
|
|
|
|
|
"id": "30",
|
|
|
|
|
"name": "glowing",
|
|
|
|
|
},
|
|
|
|
|
Object {
|
|
|
|
|
"id": "31",
|
|
|
|
|
"name": "gold",
|
|
|
|
|
},
|
|
|
|
|
Object {
|
|
|
|
|
"id": "32",
|
|
|
|
|
"name": "gooseberry",
|
|
|
|
|
},
|
|
|
|
|
Object {
|
|
|
|
|
"id": "33",
|
|
|
|
|
"name": "grape",
|
|
|
|
|
},
|
|
|
|
|
Object {
|
|
|
|
|
"id": "34",
|
|
|
|
|
"name": "green",
|
|
|
|
|
},
|
|
|
|
|
Object {
|
|
|
|
|
"id": "35",
|
|
|
|
|
"name": "grey",
|
|
|
|
|
},
|
|
|
|
|
Object {
|
|
|
|
|
"id": "36",
|
|
|
|
|
"name": "halloween",
|
|
|
|
|
},
|
|
|
|
|
Object {
|
|
|
|
|
"id": "37",
|
|
|
|
|
"name": "ice",
|
|
|
|
|
},
|
|
|
|
|
Object {
|
|
|
|
|
"id": "38",
|
|
|
|
|
"name": "invisible",
|
|
|
|
|
},
|
|
|
|
|
Object {
|
|
|
|
|
"id": "39",
|
|
|
|
|
"name": "island",
|
|
|
|
|
},
|
|
|
|
|
Object {
|
|
|
|
|
"id": "40",
|
|
|
|
|
"name": "jelly",
|
|
|
|
|
},
|
|
|
|
|
Object {
|
|
|
|
|
"id": "41",
|
|
|
|
|
"name": "lemon",
|
|
|
|
|
},
|
|
|
|
|
Object {
|
|
|
|
|
"id": "42",
|
|
|
|
|
"name": "lime",
|
|
|
|
|
},
|
|
|
|
|
Object {
|
|
|
|
|
"id": "43",
|
|
|
|
|
"name": "mallow",
|
|
|
|
|
},
|
|
|
|
|
Object {
|
|
|
|
|
"id": "44",
|
|
|
|
|
"name": "maraquan",
|
|
|
|
|
},
|
|
|
|
|
Object {
|
|
|
|
|
"id": "45",
|
|
|
|
|
"name": "msp",
|
|
|
|
|
},
|
|
|
|
|
Object {
|
|
|
|
|
"id": "46",
|
|
|
|
|
"name": "mutant",
|
|
|
|
|
},
|
|
|
|
|
Object {
|
|
|
|
|
"id": "47",
|
|
|
|
|
"name": "orange",
|
|
|
|
|
},
|
|
|
|
|
Object {
|
|
|
|
|
"id": "48",
|
|
|
|
|
"name": "pea",
|
|
|
|
|
},
|
|
|
|
|
Object {
|
|
|
|
|
"id": "49",
|
|
|
|
|
"name": "peach",
|
|
|
|
|
},
|
|
|
|
|
Object {
|
|
|
|
|
"id": "50",
|
|
|
|
|
"name": "pear",
|
|
|
|
|
},
|
|
|
|
|
Object {
|
|
|
|
|
"id": "51",
|
|
|
|
|
"name": "pepper",
|
|
|
|
|
},
|
|
|
|
|
Object {
|
|
|
|
|
"id": "52",
|
|
|
|
|
"name": "pineapple",
|
|
|
|
|
},
|
|
|
|
|
Object {
|
|
|
|
|
"id": "53",
|
|
|
|
|
"name": "pink",
|
|
|
|
|
},
|
|
|
|
|
Object {
|
|
|
|
|
"id": "54",
|
|
|
|
|
"name": "pirate",
|
|
|
|
|
},
|
|
|
|
|
Object {
|
|
|
|
|
"id": "55",
|
|
|
|
|
"name": "plum",
|
|
|
|
|
},
|
|
|
|
|
Object {
|
|
|
|
|
"id": "56",
|
|
|
|
|
"name": "plushie",
|
|
|
|
|
},
|
|
|
|
|
Object {
|
|
|
|
|
"id": "57",
|
|
|
|
|
"name": "purple",
|
|
|
|
|
},
|
|
|
|
|
Object {
|
|
|
|
|
"id": "58",
|
|
|
|
|
"name": "quigukiboy",
|
|
|
|
|
},
|
|
|
|
|
Object {
|
|
|
|
|
"id": "59",
|
|
|
|
|
"name": "quigukigirl",
|
|
|
|
|
},
|
|
|
|
|
Object {
|
|
|
|
|
"id": "60",
|
|
|
|
|
"name": "rainbow",
|
|
|
|
|
},
|
|
|
|
|
Object {
|
|
|
|
|
"id": "61",
|
|
|
|
|
"name": "red",
|
|
|
|
|
},
|
|
|
|
|
Object {
|
|
|
|
|
"id": "62",
|
|
|
|
|
"name": "robot",
|
|
|
|
|
},
|
|
|
|
|
Object {
|
|
|
|
|
"id": "63",
|
|
|
|
|
"name": "royalboy",
|
|
|
|
|
},
|
|
|
|
|
Object {
|
|
|
|
|
"id": "64",
|
|
|
|
|
"name": "royalgirl",
|
|
|
|
|
},
|
|
|
|
|
Object {
|
|
|
|
|
"id": "65",
|
|
|
|
|
"name": "shadow",
|
|
|
|
|
},
|
|
|
|
|
Object {
|
|
|
|
|
"id": "66",
|
|
|
|
|
"name": "silver",
|
|
|
|
|
},
|
|
|
|
|
Object {
|
|
|
|
|
"id": "67",
|
|
|
|
|
"name": "sketch",
|
|
|
|
|
},
|
|
|
|
|
Object {
|
|
|
|
|
"id": "68",
|
|
|
|
|
"name": "skunk",
|
|
|
|
|
},
|
|
|
|
|
Object {
|
|
|
|
|
"id": "69",
|
|
|
|
|
"name": "snot",
|
|
|
|
|
},
|
|
|
|
|
Object {
|
|
|
|
|
"id": "70",
|
|
|
|
|
"name": "snow",
|
|
|
|
|
},
|
|
|
|
|
Object {
|
|
|
|
|
"id": "71",
|
|
|
|
|
"name": "speckled",
|
|
|
|
|
},
|
|
|
|
|
Object {
|
|
|
|
|
"id": "72",
|
|
|
|
|
"name": "split",
|
|
|
|
|
},
|
|
|
|
|
Object {
|
|
|
|
|
"id": "73",
|
|
|
|
|
"name": "sponge",
|
|
|
|
|
},
|
|
|
|
|
Object {
|
|
|
|
|
"id": "74",
|
|
|
|
|
"name": "spotted",
|
|
|
|
|
},
|
|
|
|
|
Object {
|
|
|
|
|
"id": "75",
|
|
|
|
|
"name": "starry",
|
|
|
|
|
},
|
|
|
|
|
Object {
|
|
|
|
|
"id": "76",
|
|
|
|
|
"name": "strawberry",
|
|
|
|
|
},
|
|
|
|
|
Object {
|
|
|
|
|
"id": "77",
|
|
|
|
|
"name": "striped",
|
|
|
|
|
},
|
|
|
|
|
Object {
|
|
|
|
|
"id": "78",
|
|
|
|
|
"name": "thornberry",
|
|
|
|
|
},
|
|
|
|
|
Object {
|
|
|
|
|
"id": "79",
|
|
|
|
|
"name": "tomato",
|
|
|
|
|
},
|
|
|
|
|
Object {
|
|
|
|
|
"id": "80",
|
|
|
|
|
"name": "tyrannian",
|
|
|
|
|
},
|
|
|
|
|
Object {
|
|
|
|
|
"id": "81",
|
|
|
|
|
"name": "usuki boy",
|
|
|
|
|
},
|
|
|
|
|
Object {
|
|
|
|
|
"id": "82",
|
|
|
|
|
"name": "usuki girl",
|
|
|
|
|
},
|
|
|
|
|
Object {
|
|
|
|
|
"id": "83",
|
|
|
|
|
"name": "white",
|
|
|
|
|
},
|
|
|
|
|
Object {
|
|
|
|
|
"id": "84",
|
|
|
|
|
"name": "yellow",
|
|
|
|
|
},
|
|
|
|
|
Object {
|
|
|
|
|
"id": "85",
|
|
|
|
|
"name": "zombie",
|
|
|
|
|
},
|
|
|
|
|
Object {
|
|
|
|
|
"id": "86",
|
|
|
|
|
"name": "onion",
|
|
|
|
|
},
|
|
|
|
|
Object {
|
|
|
|
|
"id": "87",
|
|
|
|
|
"name": "magma",
|
|
|
|
|
},
|
|
|
|
|
Object {
|
|
|
|
|
"id": "88",
|
|
|
|
|
"name": "relic",
|
|
|
|
|
},
|
|
|
|
|
Object {
|
|
|
|
|
"id": "89",
|
|
|
|
|
"name": "woodland",
|
|
|
|
|
},
|
|
|
|
|
Object {
|
|
|
|
|
"id": "90",
|
|
|
|
|
"name": "transparent",
|
|
|
|
|
},
|
|
|
|
|
Object {
|
|
|
|
|
"id": "91",
|
|
|
|
|
"name": "maractite",
|
|
|
|
|
},
|
|
|
|
|
Object {
|
|
|
|
|
"id": "92",
|
|
|
|
|
"name": "8-bit",
|
|
|
|
|
},
|
|
|
|
|
Object {
|
|
|
|
|
"id": "93",
|
|
|
|
|
"name": "swamp gas",
|
|
|
|
|
},
|
|
|
|
|
Object {
|
|
|
|
|
"id": "94",
|
|
|
|
|
"name": "water",
|
|
|
|
|
},
|
|
|
|
|
Object {
|
|
|
|
|
"id": "95",
|
|
|
|
|
"name": "wraith",
|
|
|
|
|
},
|
|
|
|
|
Object {
|
|
|
|
|
"id": "96",
|
|
|
|
|
"name": "eventide",
|
|
|
|
|
},
|
|
|
|
|
Object {
|
|
|
|
|
"id": "97",
|
|
|
|
|
"name": "elderlyboy",
|
|
|
|
|
},
|
|
|
|
|
Object {
|
|
|
|
|
"id": "98",
|
|
|
|
|
"name": "elderlygirl",
|
|
|
|
|
},
|
|
|
|
|
Object {
|
|
|
|
|
"id": "99",
|
|
|
|
|
"name": "stealthy",
|
|
|
|
|
},
|
|
|
|
|
Object {
|
|
|
|
|
"id": "100",
|
|
|
|
|
"name": "dimensional",
|
|
|
|
|
},
|
|
|
|
|
Object {
|
|
|
|
|
"id": "101",
|
|
|
|
|
"name": "agueena",
|
|
|
|
|
},
|
|
|
|
|
Object {
|
|
|
|
|
"id": "102",
|
|
|
|
|
"name": "pastel",
|
|
|
|
|
},
|
|
|
|
|
Object {
|
|
|
|
|
"id": "103",
|
|
|
|
|
"name": "ummagine",
|
|
|
|
|
},
|
|
|
|
|
Object {
|
|
|
|
|
"id": "104",
|
|
|
|
|
"name": "Polka Dot",
|
|
|
|
|
},
|
|
|
|
|
Object {
|
|
|
|
|
"id": "105",
|
|
|
|
|
"name": "Candy",
|
|
|
|
|
},
|
|
|
|
|
Object {
|
|
|
|
|
"id": "106",
|
|
|
|
|
"name": "marble",
|
|
|
|
|
},
|
|
|
|
|
Object {
|
|
|
|
|
"id": "107",
|
|
|
|
|
"name": "Steampunk",
|
|
|
|
|
},
|
|
|
|
|
Object {
|
|
|
|
|
"id": "108",
|
|
|
|
|
"name": "Toy",
|
|
|
|
|
},
|
|
|
|
|
Object {
|
|
|
|
|
"id": "109",
|
|
|
|
|
"name": "Origami",
|
|
|
|
|
},
|
|
|
|
|
Object {
|
|
|
|
|
"id": "110",
|
|
|
|
|
"name": "Oil Paint",
|
|
|
|
|
},
|
|
|
|
|
Object {
|
|
|
|
|
"id": "111",
|
|
|
|
|
"name": "Mosaic",
|
|
|
|
|
},
|
|
|
|
|
Object {
|
|
|
|
|
"id": "112",
|
|
|
|
|
"name": "Burlap",
|
|
|
|
|
},
|
|
|
|
|
],
|
|
|
|
|
}
|
|
|
|
|
`);
|
|
|
|
|
expect(queryFn.mock.calls).toMatchInlineSnapshot(`
|
|
|
|
|
Array [
|
|
|
|
|
Array [
|
|
|
|
|
"SELECT * FROM colors",
|
|
|
|
|
],
|
|
|
|
|
Array [
|
|
|
|
|
"SELECT * FROM color_translations
|
|
|
|
|
WHERE color_id IN (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?) AND locale = \\"en\\"",
|
|
|
|
|
Array [
|
|
|
|
|
"-1",
|
|
|
|
|
"1",
|
|
|
|
|
"2",
|
|
|
|
|
"3",
|
|
|
|
|
"4",
|
|
|
|
|
"5",
|
|
|
|
|
"6",
|
|
|
|
|
"7",
|
|
|
|
|
"8",
|
|
|
|
|
"9",
|
|
|
|
|
"10",
|
|
|
|
|
"11",
|
|
|
|
|
"12",
|
|
|
|
|
"13",
|
|
|
|
|
"14",
|
|
|
|
|
"15",
|
|
|
|
|
"16",
|
|
|
|
|
"17",
|
|
|
|
|
"18",
|
|
|
|
|
"19",
|
|
|
|
|
"20",
|
|
|
|
|
"21",
|
|
|
|
|
"22",
|
|
|
|
|
"23",
|
|
|
|
|
"24",
|
|
|
|
|
"25",
|
|
|
|
|
"26",
|
|
|
|
|
"27",
|
|
|
|
|
"28",
|
|
|
|
|
"29",
|
|
|
|
|
"30",
|
|
|
|
|
"31",
|
|
|
|
|
"32",
|
|
|
|
|
"33",
|
|
|
|
|
"34",
|
|
|
|
|
"35",
|
|
|
|
|
"36",
|
|
|
|
|
"37",
|
|
|
|
|
"38",
|
|
|
|
|
"39",
|
|
|
|
|
"40",
|
|
|
|
|
"41",
|
|
|
|
|
"42",
|
|
|
|
|
"43",
|
|
|
|
|
"44",
|
|
|
|
|
"45",
|
|
|
|
|
"46",
|
|
|
|
|
"47",
|
|
|
|
|
"48",
|
|
|
|
|
"49",
|
|
|
|
|
"50",
|
|
|
|
|
"51",
|
|
|
|
|
"52",
|
|
|
|
|
"53",
|
|
|
|
|
"54",
|
|
|
|
|
"55",
|
|
|
|
|
"56",
|
|
|
|
|
"57",
|
|
|
|
|
"58",
|
|
|
|
|
"59",
|
|
|
|
|
"60",
|
|
|
|
|
"61",
|
|
|
|
|
"62",
|
|
|
|
|
"63",
|
|
|
|
|
"64",
|
|
|
|
|
"65",
|
|
|
|
|
"66",
|
|
|
|
|
"67",
|
|
|
|
|
"68",
|
|
|
|
|
"69",
|
|
|
|
|
"70",
|
|
|
|
|
"71",
|
|
|
|
|
"72",
|
|
|
|
|
"73",
|
|
|
|
|
"74",
|
|
|
|
|
"75",
|
|
|
|
|
"76",
|
|
|
|
|
"77",
|
|
|
|
|
"78",
|
|
|
|
|
"79",
|
|
|
|
|
"80",
|
|
|
|
|
"81",
|
|
|
|
|
"82",
|
|
|
|
|
"83",
|
|
|
|
|
"84",
|
|
|
|
|
"85",
|
|
|
|
|
"86",
|
|
|
|
|
"87",
|
|
|
|
|
"88",
|
|
|
|
|
"89",
|
|
|
|
|
"90",
|
|
|
|
|
"91",
|
|
|
|
|
"92",
|
|
|
|
|
"93",
|
|
|
|
|
"94",
|
|
|
|
|
"95",
|
|
|
|
|
"96",
|
|
|
|
|
"97",
|
|
|
|
|
"98",
|
|
|
|
|
"99",
|
|
|
|
|
"100",
|
|
|
|
|
"101",
|
|
|
|
|
"102",
|
|
|
|
|
"103",
|
|
|
|
|
"104",
|
|
|
|
|
"105",
|
|
|
|
|
"106",
|
|
|
|
|
"107",
|
|
|
|
|
"108",
|
|
|
|
|
"109",
|
|
|
|
|
"110",
|
|
|
|
|
"111",
|
|
|
|
|
"112",
|
|
|
|
|
],
|
|
|
|
|
],
|
|
|
|
|
]
|
|
|
|
|
`);
|
|
|
|
|
});
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
describe("SpeciesColorPair", () => {
|
|
|
|
|
it("gets them all", async () => {
|
|
|
|
|
const res = await query({
|
|
|
|
|
query: gql`
|
|
|
|
|
query {
|
|
|
|
|
allValidSpeciesColorPairs {
|
|
|
|
|
color {
|
|
|
|
|
id
|
|
|
|
|
}
|
|
|
|
|
species {
|
|
|
|
|
id
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
`,
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
expect(res).toHaveNoErrors();
|
|
|
|
|
expect(res.data).toMatchSnapshot();
|
|
|
|
|
expect(queryFn.mock.calls).toMatchInlineSnapshot(`
|
|
|
|
|
Array [
|
|
|
|
|
Array [
|
|
|
|
|
"SELECT species_id, color_id FROM pet_types",
|
|
|
|
|
],
|
|
|
|
|
]
|
|
|
|
|
`);
|
|
|
|
|
});
|
|
|
|
|
});
|
|
|
|
|
|
2020-04-23 01:08:00 -07:00
|
|
|
expect.extend({
|
|
|
|
|
toHaveNoErrors(res) {
|
|
|
|
|
if (res.errors) {
|
|
|
|
|
return {
|
|
|
|
|
message: () =>
|
|
|
|
|
`expected no GraphQL errors, but got:\n ${res.errors}`,
|
|
|
|
|
pass: false,
|
|
|
|
|
};
|
|
|
|
|
} else {
|
|
|
|
|
return {
|
|
|
|
|
message: () => `expected GraphQL errors, but there were none`,
|
|
|
|
|
pass: true,
|
|
|
|
|
};
|
|
|
|
|
}
|
|
|
|
|
},
|
2020-04-22 11:51:36 -07:00
|
|
|
});
|