add test for systems property of query resolver

This commit is contained in:
2025-01-23 03:58:49 -08:00
parent 57119d9fd9
commit c647da4931

View File

@@ -1,26 +1,56 @@
import { beforeEach, describe } from "@jest/globals"; import { beforeEach, describe, expect, it } from "@jest/globals";
import { ApolloServer } from "@apollo/server"; import { ApolloServer } from "@apollo/server";
import { ServerContext } from "../../src/ServerContext"; import { ServerContext } from "../../src/ServerContext";
import { readFileSync } from "fs"; import { readFileSync } from "fs";
import { MergedResolvers } from "../../src/MergedResolvers"; import { MergedResolvers } from "../../src/MergedResolvers";
import { UnoptimizedInMemoryRepository } from "../../src/repositories/UnoptimizedInMemoryRepository"; import { UnoptimizedInMemoryRepository } from "../../src/repositories/UnoptimizedInMemoryRepository";
import { loadTestData } from "../../src/loaders/loadTestData"; import { generateMockSystems } from "../generators";
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", () => {
let apolloServer: ApolloServer<ServerContext>; let testServer: ApolloServer<ServerContext>;
let repository: UnoptimizedInMemoryRepository; let repository: UnoptimizedInMemoryRepository;
beforeEach(async () => { beforeEach(async () => {
const typeDefs = readFileSync("./schema.graphqls", "utf8"); const typeDefs = readFileSync("./schema.graphqls", "utf8");
apolloServer = new ApolloServer<ServerContext>({ testServer = new ApolloServer<ServerContext>({
typeDefs, typeDefs,
resolvers: MergedResolvers, resolvers: MergedResolvers,
}); });
repository = new UnoptimizedInMemoryRepository(); repository = new UnoptimizedInMemoryRepository();
await loadTestData(repository);
}); });
describe("systems", () => {
it("returns systems from the repository", async () => {
const systems = generateMockSystems();
await Promise.all(systems.map(async (system) => {
await repository.addOrUpdateSystem(system);
}));
const query = `
query GetSystems
{
systems {
name
}
}
`
const response = await testServer.executeOperation({
query,
}, {
contextValue: {
repository,
},
});
assert(response.body.kind === "single");
expect(response.body.singleResult.errors).toBeUndefined();
expect(response.body.singleResult.data?.systems).toHaveLength(systems.length);
});
})
}); });