mirror of
https://github.com/brendan-ch/project-inter-server.git
synced 2026-04-17 07:50:31 +00:00
update test helpers to consolidate ServerContext creation into one method
This commit is contained in:
@@ -1,5 +1,5 @@
|
|||||||
import { beforeEach, describe, expect, it } from "@jest/globals";
|
import { beforeEach, describe, expect, it } from "@jest/globals";
|
||||||
import { setupTestServerContext } from "../testHelpers/apolloTestServerHelpers";
|
import { setupTestServerContext, setupTestServerHolder } from "../testHelpers/apolloTestServerHelpers";
|
||||||
import { IEta, IShuttle, IStop, ISystem } from "../../src/entities/entities";
|
import { IEta, IShuttle, IStop, ISystem } from "../../src/entities/entities";
|
||||||
import {
|
import {
|
||||||
addMockEtaToRepository, addMockShuttleToRepository,
|
addMockEtaToRepository, addMockShuttleToRepository,
|
||||||
@@ -9,6 +9,7 @@ import {
|
|||||||
import assert = require("node:assert");
|
import assert = require("node:assert");
|
||||||
|
|
||||||
describe("EtaResolvers", () => {
|
describe("EtaResolvers", () => {
|
||||||
|
const holder = setupTestServerHolder();
|
||||||
const context = setupTestServerContext();
|
const context = setupTestServerContext();
|
||||||
|
|
||||||
let mockSystem: ISystem;
|
let mockSystem: ISystem;
|
||||||
@@ -24,7 +25,7 @@ describe("EtaResolvers", () => {
|
|||||||
});
|
});
|
||||||
|
|
||||||
async function getResponseForEtaQuery(query: string) {
|
async function getResponseForEtaQuery(query: string) {
|
||||||
const response = await context.testServer.executeOperation({
|
const response = await holder.testServer.executeOperation({
|
||||||
query,
|
query,
|
||||||
variables: {
|
variables: {
|
||||||
systemId: mockSystem.id,
|
systemId: mockSystem.id,
|
||||||
@@ -87,4 +88,4 @@ describe("EtaResolvers", () => {
|
|||||||
expect(eta.shuttle.id).toEqual(expectedEta.shuttleId);
|
expect(eta.shuttle.id).toEqual(expectedEta.shuttleId);
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -1,8 +1,8 @@
|
|||||||
import { setupTestServerContext } from "../testHelpers/apolloTestServerHelpers";
|
|
||||||
import { describe, it } from "@jest/globals";
|
import { describe, it } from "@jest/globals";
|
||||||
|
import { setupTestServerHolder } from "../testHelpers/apolloTestServerHelpers";
|
||||||
|
|
||||||
describe("MutationResolvers", () => {
|
describe("MutationResolvers", () => {
|
||||||
const context = setupTestServerContext()
|
const testServerHolder = setupTestServerHolder()
|
||||||
|
|
||||||
describe("scheduleNotification", () => {
|
describe("scheduleNotification", () => {
|
||||||
it("adds a notification to the notification service", async () => {
|
it("adds a notification to the notification service", async () => {
|
||||||
|
|||||||
@@ -1,11 +1,12 @@
|
|||||||
import { beforeEach, describe, expect, it } from "@jest/globals";
|
import { beforeEach, describe, expect, it } from "@jest/globals";
|
||||||
import { setupTestServerContext } from "../testHelpers/apolloTestServerHelpers";
|
import { setupTestServerContext, setupTestServerHolder } from "../testHelpers/apolloTestServerHelpers";
|
||||||
import { IRoute, IStop, ISystem } from "../../src/entities/entities";
|
import { IRoute, IStop, ISystem } from "../../src/entities/entities";
|
||||||
import { generateMockOrderedStops, generateMockStops } from "../testHelpers/mockDataGenerators";
|
import { generateMockOrderedStops, generateMockStops } from "../testHelpers/mockDataGenerators";
|
||||||
import { addMockRouteToRepository, addMockSystemToRepository } from "../testHelpers/repositorySetupHelpers";
|
import { addMockRouteToRepository, addMockSystemToRepository } from "../testHelpers/repositorySetupHelpers";
|
||||||
import assert = require("node:assert");
|
import assert = require("node:assert");
|
||||||
|
|
||||||
describe("OrderedStopResolvers", () => {
|
describe("OrderedStopResolvers", () => {
|
||||||
|
const holder = setupTestServerHolder();
|
||||||
const context = setupTestServerContext();
|
const context = setupTestServerContext();
|
||||||
|
|
||||||
let mockSystem: ISystem;
|
let mockSystem: ISystem;
|
||||||
@@ -59,7 +60,7 @@ describe("OrderedStopResolvers", () => {
|
|||||||
}
|
}
|
||||||
`;
|
`;
|
||||||
|
|
||||||
return await context.testServer.executeOperation({
|
return await holder.testServer.executeOperation({
|
||||||
query,
|
query,
|
||||||
variables: {
|
variables: {
|
||||||
systemId: mockSystem.id,
|
systemId: mockSystem.id,
|
||||||
@@ -131,7 +132,7 @@ describe("OrderedStopResolvers", () => {
|
|||||||
}
|
}
|
||||||
`;
|
`;
|
||||||
|
|
||||||
return await context.testServer.executeOperation({
|
return await holder.testServer.executeOperation({
|
||||||
query,
|
query,
|
||||||
variables: {
|
variables: {
|
||||||
systemId: mockSystem.id,
|
systemId: mockSystem.id,
|
||||||
@@ -206,7 +207,7 @@ describe("OrderedStopResolvers", () => {
|
|||||||
}
|
}
|
||||||
`;
|
`;
|
||||||
|
|
||||||
return await context.testServer.executeOperation({
|
return await holder.testServer.executeOperation({
|
||||||
query,
|
query,
|
||||||
variables: {
|
variables: {
|
||||||
systemId: mockSystem.id,
|
systemId: mockSystem.id,
|
||||||
@@ -256,7 +257,7 @@ describe("OrderedStopResolvers", () => {
|
|||||||
}
|
}
|
||||||
`;
|
`;
|
||||||
|
|
||||||
return await context.testServer.executeOperation({
|
return await holder.testServer.executeOperation({
|
||||||
query,
|
query,
|
||||||
variables: {
|
variables: {
|
||||||
systemId: mockSystem.id,
|
systemId: mockSystem.id,
|
||||||
|
|||||||
@@ -1,12 +1,13 @@
|
|||||||
import { describe, expect, it } from "@jest/globals";
|
import { describe, expect, it } from "@jest/globals";
|
||||||
import { generateMockSystems } from "../testHelpers/mockDataGenerators";
|
import { generateMockSystems } from "../testHelpers/mockDataGenerators";
|
||||||
import { setupTestServerContext } from "../testHelpers/apolloTestServerHelpers";
|
import { setupTestServerContext, setupTestServerHolder } from "../testHelpers/apolloTestServerHelpers";
|
||||||
import assert = require("node:assert");
|
import assert = require("node:assert");
|
||||||
|
|
||||||
// See Apollo documentation for integration test guide
|
// See Apollo documentation for integration test guide
|
||||||
// https://www.apollographql.com/docs/apollo-server/testing/testing
|
// https://www.apollographql.com/docs/apollo-server/testing/testing
|
||||||
|
|
||||||
describe("QueryResolvers", () => {
|
describe("QueryResolvers", () => {
|
||||||
|
const holder = setupTestServerHolder();
|
||||||
const context = setupTestServerContext();
|
const context = setupTestServerContext();
|
||||||
|
|
||||||
async function addMockSystems() {
|
async function addMockSystems() {
|
||||||
@@ -30,7 +31,7 @@ describe("QueryResolvers", () => {
|
|||||||
}
|
}
|
||||||
`;
|
`;
|
||||||
|
|
||||||
const response = await context.testServer.executeOperation({
|
const response = await holder.testServer.executeOperation({
|
||||||
query,
|
query,
|
||||||
}, {
|
}, {
|
||||||
contextValue: {
|
contextValue: {
|
||||||
@@ -59,7 +60,7 @@ describe("QueryResolvers", () => {
|
|||||||
const systems = await addMockSystems();
|
const systems = await addMockSystems();
|
||||||
const systemToGet = systems[1];
|
const systemToGet = systems[1];
|
||||||
|
|
||||||
const response = await context.testServer.executeOperation({
|
const response = await holder.testServer.executeOperation({
|
||||||
query,
|
query,
|
||||||
variables: {
|
variables: {
|
||||||
id: systemToGet.id,
|
id: systemToGet.id,
|
||||||
@@ -76,7 +77,7 @@ describe("QueryResolvers", () => {
|
|||||||
});
|
});
|
||||||
|
|
||||||
it("returns null if there is no system", async () => {
|
it("returns null if there is no system", async () => {
|
||||||
const response = await context.testServer.executeOperation({
|
const response = await holder.testServer.executeOperation({
|
||||||
query,
|
query,
|
||||||
variables: {
|
variables: {
|
||||||
id: "nonexistent-id",
|
id: "nonexistent-id",
|
||||||
@@ -92,4 +93,4 @@ describe("QueryResolvers", () => {
|
|||||||
expect(response.body.singleResult.data?.system).toBeNull();
|
expect(response.body.singleResult.data?.system).toBeNull();
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
import { beforeEach, describe, expect, it } from "@jest/globals";
|
import { beforeEach, describe, expect, it } from "@jest/globals";
|
||||||
import { setupTestServerContext } from "../testHelpers/apolloTestServerHelpers";
|
import { setupTestServerContext, setupTestServerHolder } from "../testHelpers/apolloTestServerHelpers";
|
||||||
import {
|
import {
|
||||||
addMockRouteToRepository,
|
addMockRouteToRepository,
|
||||||
addMockStopToRepository,
|
addMockStopToRepository,
|
||||||
@@ -10,6 +10,7 @@ import { IRoute, IStop, ISystem } from "../../src/entities/entities";
|
|||||||
import assert = require("node:assert");
|
import assert = require("node:assert");
|
||||||
|
|
||||||
describe("RouteResolvers", () => {
|
describe("RouteResolvers", () => {
|
||||||
|
const holder = setupTestServerHolder();
|
||||||
const context = setupTestServerContext();
|
const context = setupTestServerContext();
|
||||||
|
|
||||||
let mockSystem: ISystem;
|
let mockSystem: ISystem;
|
||||||
@@ -40,7 +41,7 @@ describe("RouteResolvers", () => {
|
|||||||
}
|
}
|
||||||
`;
|
`;
|
||||||
|
|
||||||
return await context.testServer.executeOperation({
|
return await holder.testServer.executeOperation({
|
||||||
query,
|
query,
|
||||||
variables: {
|
variables: {
|
||||||
systemId: mockSystem.id,
|
systemId: mockSystem.id,
|
||||||
@@ -95,7 +96,7 @@ describe("RouteResolvers", () => {
|
|||||||
}
|
}
|
||||||
`;
|
`;
|
||||||
|
|
||||||
return await context.testServer.executeOperation({
|
return await holder.testServer.executeOperation({
|
||||||
query,
|
query,
|
||||||
variables: {
|
variables: {
|
||||||
systemId: mockSystem.id,
|
systemId: mockSystem.id,
|
||||||
@@ -145,4 +146,4 @@ describe("RouteResolvers", () => {
|
|||||||
expect(orderedStop).toBeNull();
|
expect(orderedStop).toBeNull();
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -1,12 +1,13 @@
|
|||||||
import { beforeEach, describe, expect, it } from "@jest/globals";
|
import { beforeEach, describe, expect, it } from "@jest/globals";
|
||||||
import { generateMockEtas, generateMockRoutes } from "../testHelpers/mockDataGenerators";
|
import { generateMockEtas, generateMockRoutes } from "../testHelpers/mockDataGenerators";
|
||||||
import { IShuttle, ISystem } from "../../src/entities/entities";
|
import { IShuttle, ISystem } from "../../src/entities/entities";
|
||||||
import { setupTestServerContext } from "../testHelpers/apolloTestServerHelpers";
|
import { setupTestServerContext, setupTestServerHolder } from "../testHelpers/apolloTestServerHelpers";
|
||||||
import { addMockShuttleToRepository, addMockSystemToRepository } from "../testHelpers/repositorySetupHelpers";
|
import { addMockShuttleToRepository, addMockSystemToRepository } from "../testHelpers/repositorySetupHelpers";
|
||||||
import assert = require("node:assert");
|
import assert = require("node:assert");
|
||||||
|
|
||||||
|
|
||||||
describe("ShuttleResolvers", () => {
|
describe("ShuttleResolvers", () => {
|
||||||
|
const holder = setupTestServerHolder();
|
||||||
const context = setupTestServerContext();
|
const context = setupTestServerContext();
|
||||||
|
|
||||||
let mockSystem: ISystem;
|
let mockSystem: ISystem;
|
||||||
@@ -47,7 +48,7 @@ describe("ShuttleResolvers", () => {
|
|||||||
const mockEta = etas[1];
|
const mockEta = etas[1];
|
||||||
|
|
||||||
// Act
|
// Act
|
||||||
const response = await context.testServer.executeOperation({
|
const response = await holder.testServer.executeOperation({
|
||||||
query,
|
query,
|
||||||
variables: {
|
variables: {
|
||||||
systemId: mockSystem.id,
|
systemId: mockSystem.id,
|
||||||
@@ -68,7 +69,7 @@ describe("ShuttleResolvers", () => {
|
|||||||
});
|
});
|
||||||
|
|
||||||
it("returns null if it doesn't exist", async () => {
|
it("returns null if it doesn't exist", async () => {
|
||||||
const response = await context.testServer.executeOperation({
|
const response = await holder.testServer.executeOperation({
|
||||||
query,
|
query,
|
||||||
variables: {
|
variables: {
|
||||||
systemId: mockSystem.id,
|
systemId: mockSystem.id,
|
||||||
@@ -106,7 +107,7 @@ describe("ShuttleResolvers", () => {
|
|||||||
it("returns associated ETAs if they exist for the shuttle", async () => {
|
it("returns associated ETAs if they exist for the shuttle", async () => {
|
||||||
const etas = await addMockEtas(mockShuttle.id);
|
const etas = await addMockEtas(mockShuttle.id);
|
||||||
|
|
||||||
const response = await context.testServer.executeOperation({
|
const response = await holder.testServer.executeOperation({
|
||||||
query,
|
query,
|
||||||
variables: {
|
variables: {
|
||||||
systemId: mockSystem.id,
|
systemId: mockSystem.id,
|
||||||
@@ -125,7 +126,7 @@ describe("ShuttleResolvers", () => {
|
|||||||
});
|
});
|
||||||
|
|
||||||
it("returns empty array if no ETAs exist", async () => {
|
it("returns empty array if no ETAs exist", async () => {
|
||||||
const response = await context.testServer.executeOperation({
|
const response = await holder.testServer.executeOperation({
|
||||||
query,
|
query,
|
||||||
variables: {
|
variables: {
|
||||||
systemId: mockSystem.id,
|
systemId: mockSystem.id,
|
||||||
@@ -164,7 +165,7 @@ describe("ShuttleResolvers", () => {
|
|||||||
`
|
`
|
||||||
|
|
||||||
async function getResponseForQuery() {
|
async function getResponseForQuery() {
|
||||||
return await context.testServer.executeOperation({
|
return await holder.testServer.executeOperation({
|
||||||
query,
|
query,
|
||||||
variables: {
|
variables: {
|
||||||
systemId: mockSystem.id,
|
systemId: mockSystem.id,
|
||||||
@@ -197,4 +198,4 @@ describe("ShuttleResolvers", () => {
|
|||||||
});
|
});
|
||||||
|
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -1,11 +1,12 @@
|
|||||||
import { beforeEach, describe, expect, it } from "@jest/globals";
|
import { beforeEach, describe, expect, it } from "@jest/globals";
|
||||||
import { setupTestServerContext } from "../testHelpers/apolloTestServerHelpers";
|
import { setupTestServerContext, setupTestServerHolder } from "../testHelpers/apolloTestServerHelpers";
|
||||||
import { generateMockEtas, generateMockOrderedStops } from "../testHelpers/mockDataGenerators";
|
import { generateMockEtas, generateMockOrderedStops } from "../testHelpers/mockDataGenerators";
|
||||||
import { IStop, ISystem } from "../../src/entities/entities";
|
import { IStop, ISystem } from "../../src/entities/entities";
|
||||||
import { addMockStopToRepository, addMockSystemToRepository } from "../testHelpers/repositorySetupHelpers";
|
import { addMockStopToRepository, addMockSystemToRepository } from "../testHelpers/repositorySetupHelpers";
|
||||||
import assert = require("node:assert");
|
import assert = require("node:assert");
|
||||||
|
|
||||||
describe("StopResolvers", () => {
|
describe("StopResolvers", () => {
|
||||||
|
const holder = setupTestServerHolder();
|
||||||
const context = setupTestServerContext();
|
const context = setupTestServerContext();
|
||||||
|
|
||||||
let mockStop: IStop;
|
let mockStop: IStop;
|
||||||
@@ -17,7 +18,7 @@ describe("StopResolvers", () => {
|
|||||||
})
|
})
|
||||||
|
|
||||||
async function getResponseForQuery(query: string) {
|
async function getResponseForQuery(query: string) {
|
||||||
return await context.testServer.executeOperation({
|
return await holder.testServer.executeOperation({
|
||||||
query,
|
query,
|
||||||
variables: {
|
variables: {
|
||||||
systemId: mockSystem.id,
|
systemId: mockSystem.id,
|
||||||
@@ -105,4 +106,4 @@ describe("StopResolvers", () => {
|
|||||||
expect((response.body.singleResult.data as any).system.stop.etas).toHaveLength(0);
|
expect((response.body.singleResult.data as any).system.stop.etas).toHaveLength(0);
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
import { beforeEach, describe, expect, it } from "@jest/globals";
|
import { beforeEach, describe, expect, it } from "@jest/globals";
|
||||||
import { setupTestServerContext } from "../testHelpers/apolloTestServerHelpers";
|
import { setupTestServerContext, setupTestServerHolder } from "../testHelpers/apolloTestServerHelpers";
|
||||||
import { generateMockRoutes, generateMockShuttles, generateMockStops } from "../testHelpers/mockDataGenerators";
|
import { generateMockRoutes, generateMockShuttles, generateMockStops } from "../testHelpers/mockDataGenerators";
|
||||||
import {
|
import {
|
||||||
addMockRouteToRepository,
|
addMockRouteToRepository,
|
||||||
@@ -11,6 +11,7 @@ import { ISystem } from "../../src/entities/entities";
|
|||||||
import assert = require("node:assert");
|
import assert = require("node:assert");
|
||||||
|
|
||||||
describe("SystemResolvers", () => {
|
describe("SystemResolvers", () => {
|
||||||
|
const holder = setupTestServerHolder();
|
||||||
const context = setupTestServerContext();
|
const context = setupTestServerContext();
|
||||||
|
|
||||||
let mockSystem: ISystem;
|
let mockSystem: ISystem;
|
||||||
@@ -21,7 +22,7 @@ describe("SystemResolvers", () => {
|
|||||||
|
|
||||||
// TODO: Consolidate these into one single method taking an object
|
// TODO: Consolidate these into one single method taking an object
|
||||||
async function getResponseFromQueryNeedingSystemId(query: string) {
|
async function getResponseFromQueryNeedingSystemId(query: string) {
|
||||||
return await context.testServer.executeOperation({
|
return await holder.testServer.executeOperation({
|
||||||
query,
|
query,
|
||||||
variables: {
|
variables: {
|
||||||
systemId: mockSystem.id,
|
systemId: mockSystem.id,
|
||||||
@@ -102,7 +103,7 @@ describe("SystemResolvers", () => {
|
|||||||
}
|
}
|
||||||
`;
|
`;
|
||||||
|
|
||||||
return await context.testServer.executeOperation({
|
return await holder.testServer.executeOperation({
|
||||||
query,
|
query,
|
||||||
variables: {
|
variables: {
|
||||||
systemId: mockSystem.id,
|
systemId: mockSystem.id,
|
||||||
@@ -169,7 +170,7 @@ describe("SystemResolvers", () => {
|
|||||||
}
|
}
|
||||||
`;
|
`;
|
||||||
|
|
||||||
return await context.testServer.executeOperation({
|
return await holder.testServer.executeOperation({
|
||||||
query,
|
query,
|
||||||
variables: {
|
variables: {
|
||||||
systemId: mockSystem.id,
|
systemId: mockSystem.id,
|
||||||
@@ -237,7 +238,7 @@ describe("SystemResolvers", () => {
|
|||||||
}
|
}
|
||||||
`;
|
`;
|
||||||
|
|
||||||
return await context.testServer.executeOperation({
|
return await holder.testServer.executeOperation({
|
||||||
query,
|
query,
|
||||||
variables: {
|
variables: {
|
||||||
systemId: mockSystem.id,
|
systemId: mockSystem.id,
|
||||||
@@ -318,4 +319,4 @@ describe("SystemResolvers", () => {
|
|||||||
expect(shuttles.length === expectedShuttles.length);
|
expect(shuttles.length === expectedShuttles.length);
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -4,6 +4,7 @@ import { MergedResolvers } from "../../src/MergedResolvers";
|
|||||||
import { UnoptimizedInMemoryRepository } from "../../src/repositories/UnoptimizedInMemoryRepository";
|
import { UnoptimizedInMemoryRepository } from "../../src/repositories/UnoptimizedInMemoryRepository";
|
||||||
import { beforeEach } from "@jest/globals";
|
import { beforeEach } from "@jest/globals";
|
||||||
import { ServerContext } from "../../src/ServerContext";
|
import { ServerContext } from "../../src/ServerContext";
|
||||||
|
import { NotificationService } from "../../src/services/NotificationService";
|
||||||
|
|
||||||
|
|
||||||
function setUpTestServer() {
|
function setUpTestServer() {
|
||||||
@@ -17,14 +18,28 @@ function setUpTestServer() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
export function setupTestServerContext() {
|
export function setupTestServerContext() {
|
||||||
// @ts-ignore
|
const context: { [key: string] : any } = {};
|
||||||
const context: { testServer: ApolloServer<ServerContext>; repository: UnoptimizedInMemoryRepository } = {};
|
|
||||||
|
|
||||||
beforeEach(() => {
|
beforeEach(() => {
|
||||||
context.testServer = setUpTestServer();
|
|
||||||
context.repository = new UnoptimizedInMemoryRepository();
|
context.repository = new UnoptimizedInMemoryRepository();
|
||||||
|
context.notificationService = new NotificationService(context.repository);
|
||||||
});
|
});
|
||||||
|
|
||||||
// Return a reference, not destructured values
|
return context as ServerContext;
|
||||||
return context;
|
}
|
||||||
}
|
|
||||||
|
/**
|
||||||
|
* Returns an object which holds a test server.
|
||||||
|
* This server is reset before every test.
|
||||||
|
* Tests should keep a reference to the holder object,
|
||||||
|
* and not destructure it.
|
||||||
|
*/
|
||||||
|
export function setupTestServerHolder() {
|
||||||
|
const holder: { [key: string]: any } = {};
|
||||||
|
|
||||||
|
beforeEach(() => {
|
||||||
|
holder.testServer = setUpTestServer();
|
||||||
|
});
|
||||||
|
|
||||||
|
return holder as { testServer: ApolloServer };
|
||||||
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user