impress-2020/src/server/index.test.js

1699 lines
39 KiB
JavaScript
Raw Normal View History

2020-04-22 11:51:36 -07:00
const gql = require("graphql-tag");
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");
const { config } = require("./index");
2020-04-22 11:51:36 -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 [
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 [
"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 {
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 [
Object {
"appearanceOn": Object {
"layers": Array [
Object {
"id": "37128",
"imageUrl": "https://impress-asset-images.s3.amazonaws.com/object/000/000/014/14856/600x600.png?v2-1587653266000",
"zone": Object {
"depth": 30,
"id": "26",
"label": "Jacket",
},
},
],
2020-04-23 14:44:06 -07:00
"restrictedZones": Array [
Object {
"id": "20",
},
Object {
"id": "22",
},
],
},
"id": "38912",
"name": "Zafara Agent Robe",
},
2020-04-23 01:08:00 -07:00
Object {
"appearanceOn": Object {
"layers": Array [
Object {
"id": "37129",
"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 {
"id": "30203",
"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 {
"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
},
"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 [
"SELECT * FROM items WHERE id IN (?,?,?)",
2020-04-23 01:08:00 -07:00
Array [
"38912",
"38911",
"37375",
2020-04-23 01:08:00 -07:00
],
],
Array [
"SELECT * FROM item_translations WHERE item_id IN (?,?,?) AND locale = \\"en\\"",
2020-04-23 01:08:00 -07:00
Array [
"38912",
"38911",
"37375",
2020-04-23 01:08:00 -07:00
],
],
Array [
"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",
"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
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 [
"38912",
"180",
2020-04-23 01:08:00 -07:00
"38911",
"180",
"37375",
2020-04-23 01:08:00 -07:00
"180",
],
2020-04-22 11:51:36 -07:00
],
Array [
"SELECT * FROM zones WHERE id IN (?,?,?)",
2020-04-23 01:08:00 -07:00
Array [
"26",
"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 [
"SELECT * FROM zone_translations WHERE zone_id IN (?,?,?) AND locale = \\"en\\"",
2020-04-23 01:08:00 -07:00
Array [
"26",
"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",
"imageUrl": "https://impress-asset-images.s3.amazonaws.com/biology/000/000/007/7941/600x600.png?v2-0",
"zone": Object {
"depth": 18,
},
},
Object {
"id": "5996",
"imageUrl": "https://impress-asset-images.s3.amazonaws.com/biology/000/000/007/7942/600x600.png?v2-0",
"zone": Object {
"depth": 7,
},
},
Object {
"id": "6000",
"imageUrl": "https://impress-asset-images.s3.amazonaws.com/biology/000/000/007/7946/600x600.png?v2-0",
"zone": Object {
"depth": 40,
},
},
Object {
"id": "16467",
"imageUrl": "https://impress-asset-images.s3.amazonaws.com/biology/000/000/024/24008/600x600.png?v2-0",
"zone": Object {
"depth": 34,
},
},
Object {
2020-04-25 04:43:54 -07:00
"id": "19784",
"imageUrl": "https://impress-asset-images.s3.amazonaws.com/biology/000/000/028/28892/600x600.png?v2-1313418652000",
"zone": Object {
"depth": 37,
},
},
Object {
2020-04-25 04:43:54 -07:00
"id": "178150",
"imageUrl": "https://impress-asset-images.s3.amazonaws.com/biology/000/000/036/36887/600x600.png?v2-1354240708000",
"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 [
2020-04-25 04:43:54 -07:00
"SELECT * FROM pet_states WHERE pet_type_id IN (?)
ORDER BY glitched ASC, (mood_id = 1) DESC",
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 [
2020-04-25 04:43:54 -07:00
"17723",
],
],
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", () => {
it("loads Neopian Times items", async () => {
2020-04-24 21:17:03 -07:00
const res = await query({
query: gql`
query {
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 [
"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
WHERE t.name LIKE ? AND t.locale=\\"en\\"
2020-04-24 21:17:03 -07:00
ORDER BY t.name
LIMIT 30",
Array [
"%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
}
}
}
`,
});
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",
},
}
`);
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 [
"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 [
"%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",
2020-04-25 04:33:05 -07:00
"name": "Acara",
2020-04-25 03:42:05 -07:00
},
Object {
"id": "2",
2020-04-25 04:33:05 -07:00
"name": "Aisha",
2020-04-25 03:42:05 -07:00
},
Object {
"id": "3",
2020-04-25 04:33:05 -07:00
"name": "Blumaroo",
2020-04-25 03:42:05 -07:00
},
Object {
"id": "4",
2020-04-25 04:33:05 -07:00
"name": "Bori",
2020-04-25 03:42:05 -07:00
},
Object {
"id": "5",
2020-04-25 04:33:05 -07:00
"name": "Bruce",
2020-04-25 03:42:05 -07:00
},
Object {
"id": "6",
2020-04-25 04:33:05 -07:00
"name": "Buzz",
2020-04-25 03:42:05 -07:00
},
Object {
"id": "7",
2020-04-25 04:33:05 -07:00
"name": "Chia",
2020-04-25 03:42:05 -07:00
},
Object {
"id": "8",
2020-04-25 04:33:05 -07:00
"name": "Chomby",
2020-04-25 03:42:05 -07:00
},
Object {
"id": "9",
2020-04-25 04:33:05 -07:00
"name": "Cybunny",
2020-04-25 03:42:05 -07:00
},
Object {
"id": "10",
2020-04-25 04:33:05 -07:00
"name": "Draik",
2020-04-25 03:42:05 -07:00
},
Object {
"id": "11",
2020-04-25 04:33:05 -07:00
"name": "Elephante",
2020-04-25 03:42:05 -07:00
},
Object {
"id": "12",
2020-04-25 04:33:05 -07:00
"name": "Eyrie",
2020-04-25 03:42:05 -07:00
},
Object {
"id": "13",
2020-04-25 04:33:05 -07:00
"name": "Flotsam",
2020-04-25 03:42:05 -07:00
},
Object {
"id": "14",
2020-04-25 04:33:05 -07:00
"name": "Gelert",
2020-04-25 03:42:05 -07:00
},
Object {
"id": "15",
2020-04-25 04:33:05 -07:00
"name": "Gnorbu",
2020-04-25 03:42:05 -07:00
},
Object {
"id": "16",
2020-04-25 04:33:05 -07:00
"name": "Grarrl",
2020-04-25 03:42:05 -07:00
},
Object {
"id": "17",
2020-04-25 04:33:05 -07:00
"name": "Grundo",
2020-04-25 03:42:05 -07:00
},
Object {
"id": "18",
2020-04-25 04:33:05 -07:00
"name": "Hissi",
2020-04-25 03:42:05 -07:00
},
Object {
"id": "19",
2020-04-25 04:33:05 -07:00
"name": "Ixi",
2020-04-25 03:42:05 -07:00
},
Object {
"id": "20",
2020-04-25 04:33:05 -07:00
"name": "Jetsam",
2020-04-25 03:42:05 -07:00
},
Object {
"id": "21",
2020-04-25 04:33:05 -07:00
"name": "Jubjub",
2020-04-25 03:42:05 -07:00
},
Object {
"id": "22",
2020-04-25 04:33:05 -07:00
"name": "Kacheek",
2020-04-25 03:42:05 -07:00
},
Object {
"id": "23",
2020-04-25 04:33:05 -07:00
"name": "Kau",
2020-04-25 03:42:05 -07:00
},
Object {
"id": "24",
2020-04-25 04:33:05 -07:00
"name": "Kiko",
2020-04-25 03:42:05 -07:00
},
Object {
"id": "25",
2020-04-25 04:33:05 -07:00
"name": "Koi",
2020-04-25 03:42:05 -07:00
},
Object {
"id": "26",
2020-04-25 04:33:05 -07:00
"name": "Korbat",
2020-04-25 03:42:05 -07:00
},
Object {
"id": "27",
2020-04-25 04:33:05 -07:00
"name": "Kougra",
2020-04-25 03:42:05 -07:00
},
Object {
"id": "28",
2020-04-25 04:33:05 -07:00
"name": "Krawk",
2020-04-25 03:42:05 -07:00
},
Object {
"id": "29",
2020-04-25 04:33:05 -07:00
"name": "Kyrii",
2020-04-25 03:42:05 -07:00
},
Object {
"id": "30",
2020-04-25 04:33:05 -07:00
"name": "Lenny",
2020-04-25 03:42:05 -07:00
},
Object {
"id": "31",
2020-04-25 04:33:05 -07:00
"name": "Lupe",
2020-04-25 03:42:05 -07:00
},
Object {
"id": "32",
2020-04-25 04:33:05 -07:00
"name": "Lutari",
2020-04-25 03:42:05 -07:00
},
Object {
"id": "33",
2020-04-25 04:33:05 -07:00
"name": "Meerca",
2020-04-25 03:42:05 -07:00
},
Object {
"id": "34",
2020-04-25 04:33:05 -07:00
"name": "Moehog",
2020-04-25 03:42:05 -07:00
},
Object {
"id": "35",
2020-04-25 04:33:05 -07:00
"name": "Mynci",
2020-04-25 03:42:05 -07:00
},
Object {
"id": "36",
2020-04-25 04:33:05 -07:00
"name": "Nimmo",
2020-04-25 03:42:05 -07:00
},
Object {
"id": "37",
2020-04-25 04:33:05 -07:00
"name": "Ogrin",
2020-04-25 03:42:05 -07:00
},
Object {
"id": "38",
2020-04-25 04:33:05 -07:00
"name": "Peophin",
2020-04-25 03:42:05 -07:00
},
Object {
"id": "39",
2020-04-25 04:33:05 -07:00
"name": "Poogle",
2020-04-25 03:42:05 -07:00
},
Object {
"id": "40",
2020-04-25 04:33:05 -07:00
"name": "Pteri",
2020-04-25 03:42:05 -07:00
},
Object {
"id": "41",
2020-04-25 04:33:05 -07:00
"name": "Quiggle",
2020-04-25 03:42:05 -07:00
},
Object {
"id": "42",
2020-04-25 04:33:05 -07:00
"name": "Ruki",
2020-04-25 03:42:05 -07:00
},
Object {
"id": "43",
2020-04-25 04:33:05 -07:00
"name": "Scorchio",
2020-04-25 03:42:05 -07:00
},
Object {
"id": "44",
2020-04-25 04:33:05 -07:00
"name": "Shoyru",
2020-04-25 03:42:05 -07:00
},
Object {
"id": "45",
2020-04-25 04:33:05 -07:00
"name": "Skeith",
2020-04-25 03:42:05 -07:00
},
Object {
"id": "46",
2020-04-25 04:33:05 -07:00
"name": "Techo",
2020-04-25 03:42:05 -07:00
},
Object {
"id": "47",
2020-04-25 04:33:05 -07:00
"name": "Tonu",
2020-04-25 03:42:05 -07:00
},
Object {
"id": "48",
2020-04-25 04:33:05 -07:00
"name": "Tuskaninny",
2020-04-25 03:42:05 -07:00
},
Object {
"id": "49",
2020-04-25 04:33:05 -07:00
"name": "Uni",
2020-04-25 03:42:05 -07:00
},
Object {
"id": "50",
2020-04-25 04:33:05 -07:00
"name": "Usul",
2020-04-25 03:42:05 -07:00
},
Object {
"id": "51",
2020-04-25 04:33:05 -07:00
"name": "Wocky",
2020-04-25 03:42:05 -07:00
},
Object {
"id": "52",
2020-04-25 04:33:05 -07:00
"name": "Xweetok",
2020-04-25 03:42:05 -07:00
},
Object {
"id": "53",
2020-04-25 04:33:05 -07:00
"name": "Yurble",
2020-04-25 03:42:05 -07:00
},
Object {
"id": "54",
2020-04-25 04:33:05 -07:00
"name": "Zafara",
2020-04-25 03:42:05 -07:00
},
Object {
"id": "55",
2020-04-25 04:33:05 -07:00
"name": "Vandagyre",
2020-04-25 03:42:05 -07:00
},
],
}
`);
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",
2020-04-25 04:33:05 -07:00
"name": "Alien",
2020-04-25 03:42:05 -07:00
},
Object {
"id": "2",
2020-04-25 04:33:05 -07:00
"name": "Apple",
2020-04-25 03:42:05 -07:00
},
Object {
"id": "3",
2020-04-25 04:33:05 -07:00
"name": "Asparagus",
2020-04-25 03:42:05 -07:00
},
Object {
"id": "4",
2020-04-25 04:33:05 -07:00
"name": "Aubergine",
2020-04-25 03:42:05 -07:00
},
Object {
"id": "5",
2020-04-25 04:33:05 -07:00
"name": "Avocado",
2020-04-25 03:42:05 -07:00
},
Object {
"id": "6",
2020-04-25 04:33:05 -07:00
"name": "Baby",
2020-04-25 03:42:05 -07:00
},
Object {
"id": "7",
2020-04-25 04:33:05 -07:00
"name": "Biscuit",
2020-04-25 03:42:05 -07:00
},
Object {
"id": "8",
2020-04-25 04:33:05 -07:00
"name": "Blue",
2020-04-25 03:42:05 -07:00
},
Object {
"id": "9",
2020-04-25 04:33:05 -07:00
"name": "Blueberry",
2020-04-25 03:42:05 -07:00
},
Object {
"id": "10",
2020-04-25 04:33:05 -07:00
"name": "Brown",
2020-04-25 03:42:05 -07:00
},
Object {
"id": "11",
2020-04-25 04:33:05 -07:00
"name": "Camouflage",
2020-04-25 03:42:05 -07:00
},
Object {
"id": "12",
2020-04-25 04:33:05 -07:00
"name": "Carrot",
2020-04-25 03:42:05 -07:00
},
Object {
"id": "13",
2020-04-25 04:33:05 -07:00
"name": "Checkered",
2020-04-25 03:42:05 -07:00
},
Object {
"id": "14",
2020-04-25 04:33:05 -07:00
"name": "Chocolate",
2020-04-25 03:42:05 -07:00
},
Object {
"id": "15",
2020-04-25 04:33:05 -07:00
"name": "Chokato",
2020-04-25 03:42:05 -07:00
},
Object {
"id": "16",
2020-04-25 04:33:05 -07:00
"name": "Christmas",
2020-04-25 03:42:05 -07:00
},
Object {
"id": "17",
2020-04-25 04:33:05 -07:00
"name": "Clay",
2020-04-25 03:42:05 -07:00
},
Object {
"id": "18",
2020-04-25 04:33:05 -07:00
"name": "Cloud",
2020-04-25 03:42:05 -07:00
},
Object {
"id": "19",
2020-04-25 04:33:05 -07:00
"name": "Coconut",
2020-04-25 03:42:05 -07:00
},
Object {
"id": "20",
2020-04-25 04:33:05 -07:00
"name": "Custard",
2020-04-25 03:42:05 -07:00
},
Object {
"id": "21",
2020-04-25 04:33:05 -07:00
"name": "Darigan",
2020-04-25 03:42:05 -07:00
},
Object {
"id": "22",
2020-04-25 04:33:05 -07:00
"name": "Desert",
2020-04-25 03:42:05 -07:00
},
Object {
"id": "23",
2020-04-25 04:33:05 -07:00
"name": "Disco",
2020-04-25 03:42:05 -07:00
},
Object {
"id": "24",
2020-04-25 04:33:05 -07:00
"name": "Durian",
2020-04-25 03:42:05 -07:00
},
Object {
"id": "25",
2020-04-25 04:33:05 -07:00
"name": "Electric",
2020-04-25 03:42:05 -07:00
},
Object {
"id": "26",
2020-04-25 04:33:05 -07:00
"name": "Faerie",
2020-04-25 03:42:05 -07:00
},
Object {
"id": "27",
2020-04-25 04:33:05 -07:00
"name": "Fire",
2020-04-25 03:42:05 -07:00
},
Object {
"id": "28",
2020-04-25 04:33:05 -07:00
"name": "Garlic",
2020-04-25 03:42:05 -07:00
},
Object {
"id": "29",
2020-04-25 04:33:05 -07:00
"name": "Ghost",
2020-04-25 03:42:05 -07:00
},
Object {
"id": "30",
2020-04-25 04:33:05 -07:00
"name": "Glowing",
2020-04-25 03:42:05 -07:00
},
Object {
"id": "31",
2020-04-25 04:33:05 -07:00
"name": "Gold",
2020-04-25 03:42:05 -07:00
},
Object {
"id": "32",
2020-04-25 04:33:05 -07:00
"name": "Gooseberry",
2020-04-25 03:42:05 -07:00
},
Object {
"id": "33",
2020-04-25 04:33:05 -07:00
"name": "Grape",
2020-04-25 03:42:05 -07:00
},
Object {
"id": "34",
2020-04-25 04:33:05 -07:00
"name": "Green",
2020-04-25 03:42:05 -07:00
},
Object {
"id": "35",
2020-04-25 04:33:05 -07:00
"name": "Grey",
2020-04-25 03:42:05 -07:00
},
Object {
"id": "36",
2020-04-25 04:33:05 -07:00
"name": "Halloween",
2020-04-25 03:42:05 -07:00
},
Object {
"id": "37",
2020-04-25 04:33:05 -07:00
"name": "Ice",
2020-04-25 03:42:05 -07:00
},
Object {
"id": "38",
2020-04-25 04:33:05 -07:00
"name": "Invisible",
2020-04-25 03:42:05 -07:00
},
Object {
"id": "39",
2020-04-25 04:33:05 -07:00
"name": "Island",
2020-04-25 03:42:05 -07:00
},
Object {
"id": "40",
2020-04-25 04:33:05 -07:00
"name": "Jelly",
2020-04-25 03:42:05 -07:00
},
Object {
"id": "41",
2020-04-25 04:33:05 -07:00
"name": "Lemon",
2020-04-25 03:42:05 -07:00
},
Object {
"id": "42",
2020-04-25 04:33:05 -07:00
"name": "Lime",
2020-04-25 03:42:05 -07:00
},
Object {
"id": "43",
2020-04-25 04:33:05 -07:00
"name": "Mallow",
2020-04-25 03:42:05 -07:00
},
Object {
"id": "44",
2020-04-25 04:33:05 -07:00
"name": "Maraquan",
2020-04-25 03:42:05 -07:00
},
Object {
"id": "45",
2020-04-25 04:33:05 -07:00
"name": "Msp",
2020-04-25 03:42:05 -07:00
},
Object {
"id": "46",
2020-04-25 04:33:05 -07:00
"name": "Mutant",
2020-04-25 03:42:05 -07:00
},
Object {
"id": "47",
2020-04-25 04:33:05 -07:00
"name": "Orange",
2020-04-25 03:42:05 -07:00
},
Object {
"id": "48",
2020-04-25 04:33:05 -07:00
"name": "Pea",
2020-04-25 03:42:05 -07:00
},
Object {
"id": "49",
2020-04-25 04:33:05 -07:00
"name": "Peach",
2020-04-25 03:42:05 -07:00
},
Object {
"id": "50",
2020-04-25 04:33:05 -07:00
"name": "Pear",
2020-04-25 03:42:05 -07:00
},
Object {
"id": "51",
2020-04-25 04:33:05 -07:00
"name": "Pepper",
2020-04-25 03:42:05 -07:00
},
Object {
"id": "52",
2020-04-25 04:33:05 -07:00
"name": "Pineapple",
2020-04-25 03:42:05 -07:00
},
Object {
"id": "53",
2020-04-25 04:33:05 -07:00
"name": "Pink",
2020-04-25 03:42:05 -07:00
},
Object {
"id": "54",
2020-04-25 04:33:05 -07:00
"name": "Pirate",
2020-04-25 03:42:05 -07:00
},
Object {
"id": "55",
2020-04-25 04:33:05 -07:00
"name": "Plum",
2020-04-25 03:42:05 -07:00
},
Object {
"id": "56",
2020-04-25 04:33:05 -07:00
"name": "Plushie",
2020-04-25 03:42:05 -07:00
},
Object {
"id": "57",
2020-04-25 04:33:05 -07:00
"name": "Purple",
2020-04-25 03:42:05 -07:00
},
Object {
"id": "58",
2020-04-25 04:33:05 -07:00
"name": "Quigukiboy",
2020-04-25 03:42:05 -07:00
},
Object {
"id": "59",
2020-04-25 04:33:05 -07:00
"name": "Quigukigirl",
2020-04-25 03:42:05 -07:00
},
Object {
"id": "60",
2020-04-25 04:33:05 -07:00
"name": "Rainbow",
2020-04-25 03:42:05 -07:00
},
Object {
"id": "61",
2020-04-25 04:33:05 -07:00
"name": "Red",
2020-04-25 03:42:05 -07:00
},
Object {
"id": "62",
2020-04-25 04:33:05 -07:00
"name": "Robot",
2020-04-25 03:42:05 -07:00
},
Object {
"id": "63",
2020-04-25 04:33:05 -07:00
"name": "Royalboy",
2020-04-25 03:42:05 -07:00
},
Object {
"id": "64",
2020-04-25 04:33:05 -07:00
"name": "Royalgirl",
2020-04-25 03:42:05 -07:00
},
Object {
"id": "65",
2020-04-25 04:33:05 -07:00
"name": "Shadow",
2020-04-25 03:42:05 -07:00
},
Object {
"id": "66",
2020-04-25 04:33:05 -07:00
"name": "Silver",
2020-04-25 03:42:05 -07:00
},
Object {
"id": "67",
2020-04-25 04:33:05 -07:00
"name": "Sketch",
2020-04-25 03:42:05 -07:00
},
Object {
"id": "68",
2020-04-25 04:33:05 -07:00
"name": "Skunk",
2020-04-25 03:42:05 -07:00
},
Object {
"id": "69",
2020-04-25 04:33:05 -07:00
"name": "Snot",
2020-04-25 03:42:05 -07:00
},
Object {
"id": "70",
2020-04-25 04:33:05 -07:00
"name": "Snow",
2020-04-25 03:42:05 -07:00
},
Object {
"id": "71",
2020-04-25 04:33:05 -07:00
"name": "Speckled",
2020-04-25 03:42:05 -07:00
},
Object {
"id": "72",
2020-04-25 04:33:05 -07:00
"name": "Split",
2020-04-25 03:42:05 -07:00
},
Object {
"id": "73",
2020-04-25 04:33:05 -07:00
"name": "Sponge",
2020-04-25 03:42:05 -07:00
},
Object {
"id": "74",
2020-04-25 04:33:05 -07:00
"name": "Spotted",
2020-04-25 03:42:05 -07:00
},
Object {
"id": "75",
2020-04-25 04:33:05 -07:00
"name": "Starry",
2020-04-25 03:42:05 -07:00
},
Object {
"id": "76",
2020-04-25 04:33:05 -07:00
"name": "Strawberry",
2020-04-25 03:42:05 -07:00
},
Object {
"id": "77",
2020-04-25 04:33:05 -07:00
"name": "Striped",
2020-04-25 03:42:05 -07:00
},
Object {
"id": "78",
2020-04-25 04:33:05 -07:00
"name": "Thornberry",
2020-04-25 03:42:05 -07:00
},
Object {
"id": "79",
2020-04-25 04:33:05 -07:00
"name": "Tomato",
2020-04-25 03:42:05 -07:00
},
Object {
"id": "80",
2020-04-25 04:33:05 -07:00
"name": "Tyrannian",
2020-04-25 03:42:05 -07:00
},
Object {
"id": "81",
2020-04-25 04:33:05 -07:00
"name": "Usuki boy",
2020-04-25 03:42:05 -07:00
},
Object {
"id": "82",
2020-04-25 04:33:05 -07:00
"name": "Usuki girl",
2020-04-25 03:42:05 -07:00
},
Object {
"id": "83",
2020-04-25 04:33:05 -07:00
"name": "White",
2020-04-25 03:42:05 -07:00
},
Object {
"id": "84",
2020-04-25 04:33:05 -07:00
"name": "Yellow",
2020-04-25 03:42:05 -07:00
},
Object {
"id": "85",
2020-04-25 04:33:05 -07:00
"name": "Zombie",
2020-04-25 03:42:05 -07:00
},
Object {
"id": "86",
2020-04-25 04:33:05 -07:00
"name": "Onion",
2020-04-25 03:42:05 -07:00
},
Object {
"id": "87",
2020-04-25 04:33:05 -07:00
"name": "Magma",
2020-04-25 03:42:05 -07:00
},
Object {
"id": "88",
2020-04-25 04:33:05 -07:00
"name": "Relic",
2020-04-25 03:42:05 -07:00
},
Object {
"id": "89",
2020-04-25 04:33:05 -07:00
"name": "Woodland",
2020-04-25 03:42:05 -07:00
},
Object {
"id": "90",
2020-04-25 04:33:05 -07:00
"name": "Transparent",
2020-04-25 03:42:05 -07:00
},
Object {
"id": "91",
2020-04-25 04:33:05 -07:00
"name": "Maractite",
2020-04-25 03:42:05 -07:00
},
Object {
"id": "92",
"name": "8-bit",
},
Object {
"id": "93",
2020-04-25 04:33:05 -07:00
"name": "Swamp gas",
2020-04-25 03:42:05 -07:00
},
Object {
"id": "94",
2020-04-25 04:33:05 -07:00
"name": "Water",
2020-04-25 03:42:05 -07:00
},
Object {
"id": "95",
2020-04-25 04:33:05 -07:00
"name": "Wraith",
2020-04-25 03:42:05 -07:00
},
Object {
"id": "96",
2020-04-25 04:33:05 -07:00
"name": "Eventide",
2020-04-25 03:42:05 -07:00
},
Object {
"id": "97",
2020-04-25 04:33:05 -07:00
"name": "Elderlyboy",
2020-04-25 03:42:05 -07:00
},
Object {
"id": "98",
2020-04-25 04:33:05 -07:00
"name": "Elderlygirl",
2020-04-25 03:42:05 -07:00
},
Object {
"id": "99",
2020-04-25 04:33:05 -07:00
"name": "Stealthy",
2020-04-25 03:42:05 -07:00
},
Object {
"id": "100",
2020-04-25 04:33:05 -07:00
"name": "Dimensional",
2020-04-25 03:42:05 -07:00
},
Object {
"id": "101",
2020-04-25 04:33:05 -07:00
"name": "Agueena",
2020-04-25 03:42:05 -07:00
},
Object {
"id": "102",
2020-04-25 04:33:05 -07:00
"name": "Pastel",
2020-04-25 03:42:05 -07:00
},
Object {
"id": "103",
2020-04-25 04:33:05 -07:00
"name": "Ummagine",
2020-04-25 03:42:05 -07:00
},
Object {
"id": "104",
"name": "Polka Dot",
},
Object {
"id": "105",
"name": "Candy",
},
Object {
"id": "106",
2020-04-25 04:33:05 -07:00
"name": "Marble",
2020-04-25 03:42:05 -07:00
},
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 [
2020-04-25 04:33:05 -07:00
"SELECT * FROM colors WHERE prank = 0",
2020-04-25 03:42:05 -07:00
],
Array [
"SELECT * FROM color_translations
2020-04-25 04:33:05 -07:00
WHERE color_id IN (?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?,?) AND locale = \\"en\\"",
2020-04-25 03:42:05 -07:00
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",
"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
});