From fbd0c76b702c36e73810dffe8c8db0837d421c0b Mon Sep 17 00:00:00 2001 From: Brendan Chen Date: Wed, 29 Jan 2025 15:07:02 -0800 Subject: [PATCH] extract test server context code into separate method --- .../OrderedStopResolverTests.test.ts | 48 ++++++++----------- test/testHelpers/apolloSetupHelpers.ts | 17 +++++++ 2 files changed, 38 insertions(+), 27 deletions(-) diff --git a/test/resolvers/OrderedStopResolverTests.test.ts b/test/resolvers/OrderedStopResolverTests.test.ts index 2908b81..6640c7a 100644 --- a/test/resolvers/OrderedStopResolverTests.test.ts +++ b/test/resolvers/OrderedStopResolverTests.test.ts @@ -2,7 +2,7 @@ import { beforeEach, describe, expect, it } from "@jest/globals"; import { ApolloServer } from "@apollo/server"; import { UnoptimizedInMemoryRepository } from "../../src/repositories/UnoptimizedInMemoryRepository"; import { ServerContext } from "../../src/ServerContext"; -import { setUpTestServer } from "../testHelpers/apolloSetupHelpers"; +import { setupTestServerContext, setUpTestServer } from "../testHelpers/apolloSetupHelpers"; import { IRoute, IStop, ISystem } from "../../src/entities/entities"; import { generateMockOrderedStops, @@ -15,26 +15,20 @@ import assert = require("node:assert"); import { addMockRouteToRepository, addMockSystemToRepository } from "../testHelpers/repositorySetupHelpers"; describe("OrderedStopResolvers", () => { - let testServer: ApolloServer; - let repository: UnoptimizedInMemoryRepository; - - beforeEach(async () => { - testServer = setUpTestServer(); - repository = new UnoptimizedInMemoryRepository(); - }); + const context = setupTestServerContext(); let mockSystem: ISystem; let mockRoute: IRoute; let mockStops: IStop[]; beforeEach(async () => { - mockSystem = await addMockSystemToRepository(repository); - mockRoute = await addMockRouteToRepository(repository, mockSystem.id); + mockSystem = await addMockSystemToRepository(context.repository); + mockRoute = await addMockRouteToRepository(context.repository, mockSystem.id); mockStops = generateMockStops(); await Promise.all(mockStops.map(async (mockStop) => { mockStop.systemId = mockSystem.id; - await repository.addOrUpdateStop(mockStop); + await context.repository.addOrUpdateStop(mockStop); })); }); @@ -52,8 +46,8 @@ describe("OrderedStopResolvers", () => { // Link the stops together orderedStops[0].nextStop = orderedStops[1]; orderedStops[1].previousStop = orderedStops[0]; - await repository.addOrUpdateOrderedStop(orderedStops[0]); - await repository.addOrUpdateOrderedStop(orderedStops[1]); + await context.repository.addOrUpdateOrderedStop(orderedStops[0]); + await context.repository.addOrUpdateOrderedStop(orderedStops[1]); return orderedStops; } @@ -74,7 +68,7 @@ describe("OrderedStopResolvers", () => { } `; - return await testServer.executeOperation({ + return await context.testServer.executeOperation({ query, variables: { systemId: mockSystem.id, @@ -83,7 +77,7 @@ describe("OrderedStopResolvers", () => { }, }, { contextValue: { - repository, + repository: context.repository, } }); } @@ -108,7 +102,7 @@ describe("OrderedStopResolvers", () => { it("returns null if there is no next stop in the repository", async () => { const orderedStops = await setUpOrderedStopsInRepository(); orderedStops[0].nextStop = undefined; - await repository.addOrUpdateOrderedStop(orderedStops[0]); + await context.repository.addOrUpdateOrderedStop(orderedStops[0]); const response = await getResponseForNextStopQuery(orderedStops[0].stopId); @@ -119,7 +113,7 @@ describe("OrderedStopResolvers", () => { it("returns null if the next stop object no longer exists", async () => { const orderedStops = await setUpOrderedStopsInRepository(); - await repository.removeStopIfExists(orderedStops[1].stopId); + await context.repository.removeStopIfExists(orderedStops[1].stopId); const response = await getResponseForNextStopQuery(orderedStops[0].stopId); @@ -146,7 +140,7 @@ describe("OrderedStopResolvers", () => { } `; - return await testServer.executeOperation({ + return await context.testServer.executeOperation({ query, variables: { systemId: mockSystem.id, @@ -155,7 +149,7 @@ describe("OrderedStopResolvers", () => { }, }, { contextValue: { - repository, + repository: context.repository, } }); } @@ -179,7 +173,7 @@ describe("OrderedStopResolvers", () => { it("returns null if there is no previous stop in the repository", async () => { const orderedStops = await setUpOrderedStopsInRepository(); orderedStops[1].previousStop = undefined; - await repository.addOrUpdateOrderedStop(orderedStops[1]); + await context.repository.addOrUpdateOrderedStop(orderedStops[1]); const response = await getResponseForPreviousStopQuery(orderedStops[1].stopId); @@ -190,7 +184,7 @@ describe("OrderedStopResolvers", () => { it("returns null if the current stop no longer exists", async () => { const orderedStops = await setUpOrderedStopsInRepository(); - await repository.removeStopIfExists(orderedStops[0].stopId); + await context.repository.removeStopIfExists(orderedStops[0].stopId); const response = await getResponseForPreviousStopQuery(orderedStops[1].stopId); @@ -221,7 +215,7 @@ describe("OrderedStopResolvers", () => { } `; - return await testServer.executeOperation({ + return await context.testServer.executeOperation({ query, variables: { systemId: mockSystem.id, @@ -229,7 +223,7 @@ describe("OrderedStopResolvers", () => { } }, { contextValue: { - repository, + repository: context.repository, } }); } @@ -240,7 +234,7 @@ describe("OrderedStopResolvers", () => { orderedStops[0].stopId = mockStops[0].id; // Add one stop only - await repository.addOrUpdateOrderedStop(orderedStops[0]); + await context.repository.addOrUpdateOrderedStop(orderedStops[0]); const response = await getResponseForRouteQuery(orderedStops[1].stopId); @@ -271,7 +265,7 @@ describe("OrderedStopResolvers", () => { } `; - return await testServer.executeOperation({ + return await context.testServer.executeOperation({ query, variables: { systemId: mockSystem.id, @@ -280,7 +274,7 @@ describe("OrderedStopResolvers", () => { } }, { contextValue: { - repository, + repository: context.repository, } }); } @@ -288,7 +282,7 @@ describe("OrderedStopResolvers", () => { it("returns the associated stop if it exists", async () => { const orderedStops = await setUpOrderedStopsInRepository(); orderedStops[0].stopId = mockStops[0].id; - await repository.addOrUpdateOrderedStop(orderedStops[0]); + await context.repository.addOrUpdateOrderedStop(orderedStops[0]); const response = await getResponseForStopQuery(orderedStops[0].stopId); diff --git a/test/testHelpers/apolloSetupHelpers.ts b/test/testHelpers/apolloSetupHelpers.ts index 5a4bf8e..f600440 100644 --- a/test/testHelpers/apolloSetupHelpers.ts +++ b/test/testHelpers/apolloSetupHelpers.ts @@ -1,6 +1,10 @@ import { readFileSync } from "fs"; import { ApolloServer } from "@apollo/server"; import { MergedResolvers } from "../../src/MergedResolvers"; +import { UnoptimizedInMemoryRepository } from "../../src/repositories/UnoptimizedInMemoryRepository"; +import { beforeEach } from "@jest/globals"; +import { ServerContext } from "../../src/ServerContext"; + export function setUpTestServer() { // Leaving this separate from the main server in case @@ -11,3 +15,16 @@ export function setUpTestServer() { resolvers: MergedResolvers, }); } + +export function setupTestServerContext() { + // @ts-ignore + const context: { testServer: ApolloServer; repository: UnoptimizedInMemoryRepository } = {}; + + beforeEach(() => { + context.testServer = setUpTestServer(); + context.repository = new UnoptimizedInMemoryRepository(); + }); + + // Return a reference, not destructured values + return context; +} \ No newline at end of file