chore: add tests for schema and API config mocking

- Added unit tests for schema loader, mocking Config variables and resolvers.
- Added unit tests for Zabbix API configuration, verifying constants derived from Config.
- Mocked relevant modules and filesystem behaviors to enable isolated testing.
- Optimized imports on all files and include this within a new .junie/guidelines.md file
This commit is contained in:
Andreas Hilbig 2026-01-28 07:34:08 +01:00
parent 5e41aa5cc4
commit 7adaf82c1b
23 changed files with 204 additions and 110 deletions

View file

@ -0,0 +1,41 @@
import {schema_loader} from "../api/schema.js";
import * as fs from "fs";
import * as nodeFs from "node:fs";
// Mocking Config
jest.mock("../common_utils.js", () => ({
Config: {
SCHEMA_PATH: "./test_schema/",
ADDITIONAL_SCHEMAS: "./test_schema/extra.graphql",
ADDITIONAL_RESOLVERS: "ExtraDevice"
}
}));
// Mocking resolvers to avoid schema validation errors
jest.mock("../api/resolvers.js", () => ({
createResolvers: jest.fn().mockReturnValue({
Query: {
test: () => "ok"
}
})
}));
// Mocking fs
jest.mock("fs", () => ({
readFileSync: jest.fn().mockReturnValue("type Query { test: String } type Device { id: ID tags: [String] } type GenericDevice { id: ID tags: [String] } type DeviceConfig { id: ID } type ExtraDevice { id: ID tags: [String] }")
}));
jest.mock("node:fs", () => ({
readdirSync: jest.fn().mockReturnValue(["base.graphql"])
}));
describe("Schema Config Mocking", () => {
test("schema_loader uses Config variables", async () => {
const schema = await schema_loader();
expect(nodeFs.readdirSync).toHaveBeenCalledWith("./test_schema/");
expect(fs.readFileSync).toHaveBeenCalledWith("./test_schema/base.graphql", expect.anything());
expect(fs.readFileSync).toHaveBeenCalledWith("./test_schema/extra.graphql", expect.anything());
expect(schema).toBeDefined();
});
});