Add tests for ReferenceClientV2 class
All checks were successful
Testing / run-tests (push) Successful in 3m12s
All checks were successful
Testing / run-tests (push) Successful in 3m12s
This commit is contained in:
parent
9e53756551
commit
bfcacebe8f
86
src/clients/ReferenceClientV2.test.ts
Normal file
86
src/clients/ReferenceClientV2.test.ts
Normal file
@ -0,0 +1,86 @@
|
|||||||
|
import type { ReferenceV2_LocationReferenceCodeType } from "../types/reference/ReferenceTypesV2";
|
||||||
|
import { ValidationError } from "../errors";
|
||||||
|
import { OwlBoardClientV2 } from "./client";
|
||||||
|
import { ReferenceClientV2 } from "./ReferenceClientV2";
|
||||||
|
|
||||||
|
// Create a Jest mock for OwlBoardClientV2
|
||||||
|
jest.mock("./client", () => {
|
||||||
|
return {
|
||||||
|
OwlBoardClientV2: jest.fn().mockImplementation(() => ({
|
||||||
|
makeRequest: jest.fn().mockResolvedValue({ success: true })
|
||||||
|
}))
|
||||||
|
};
|
||||||
|
});
|
||||||
|
|
||||||
|
describe("defineReasonCode Tests", () => {
|
||||||
|
let instance: ReferenceClientV2;
|
||||||
|
let mockClient: jest.Mocked<OwlBoardClientV2>;
|
||||||
|
|
||||||
|
beforeEach(() => {
|
||||||
|
// Create a mocked instance of OwlBoardClientV2
|
||||||
|
mockClient = new OwlBoardClientV2("https://api.example.com", "test-api-key") as jest.Mocked<OwlBoardClientV2>;
|
||||||
|
|
||||||
|
// Create an instance of MyClass with the mocked client
|
||||||
|
instance = new ReferenceClientV2(mockClient);
|
||||||
|
});
|
||||||
|
|
||||||
|
test("Calls makeRequest with correct method and path when code is valid", async () => {
|
||||||
|
await expect(instance.defineReasonCode(503)).resolves.toEqual({ success: true });
|
||||||
|
|
||||||
|
expect(mockClient.makeRequest).toHaveBeenCalledWith("GET", "/api/v2/ref/reasonCode/503");
|
||||||
|
})
|
||||||
|
|
||||||
|
test("Throw ValidationError when code is invalid", async () => {
|
||||||
|
await expect(instance.defineReasonCode(1234)).rejects.toThrow(ValidationError);
|
||||||
|
})
|
||||||
|
})
|
||||||
|
|
||||||
|
describe("lookupLocationReference Tests", () => {
|
||||||
|
let instance: ReferenceClientV2;
|
||||||
|
let mockClient: jest.Mocked<OwlBoardClientV2>;
|
||||||
|
|
||||||
|
beforeEach(() => {
|
||||||
|
// Create a mocked instance of OwlBoardClientV2
|
||||||
|
mockClient = new OwlBoardClientV2("https://api.example.com", "test-api-key") as jest.Mocked<OwlBoardClientV2>;
|
||||||
|
|
||||||
|
// Create an instance of MyClass with the mocked client
|
||||||
|
instance = new ReferenceClientV2(mockClient);
|
||||||
|
});
|
||||||
|
|
||||||
|
test("Calls makeRequest with the correct path for valid CRS", async () => {
|
||||||
|
await expect(instance.lookupLocationReference("crs", "LDS")).resolves.toEqual({ success: true });
|
||||||
|
|
||||||
|
expect(mockClient.makeRequest).toHaveBeenCalledWith("GET", "/api/v2/ref/locationCode/crs/LDS");
|
||||||
|
});
|
||||||
|
|
||||||
|
test("Calls makeRequest with the correct path for valid NLC", async () => {
|
||||||
|
await expect(instance.lookupLocationReference("nlc", "123456")).resolves.toEqual({ success: true });
|
||||||
|
|
||||||
|
expect(mockClient.makeRequest).toHaveBeenCalledWith("GET", "/api/v2/ref/locationCode/nlc/123456");
|
||||||
|
});
|
||||||
|
|
||||||
|
test("Calls makeRequest with the correct path for valid STANOX", async () => {
|
||||||
|
await expect(instance.lookupLocationReference("stanox", "12345")).resolves.toEqual({ success: true });
|
||||||
|
|
||||||
|
expect(mockClient.makeRequest).toHaveBeenCalledWith("GET", "/api/v2/ref/locationCode/stanox/12345");
|
||||||
|
})
|
||||||
|
|
||||||
|
test("Calls makeRequest with the correct path for valid STANOX", async () => {
|
||||||
|
await expect(instance.lookupLocationReference("tiploc", "bathspa")).resolves.toEqual({ success: true });
|
||||||
|
|
||||||
|
expect(mockClient.makeRequest).toHaveBeenCalledWith("GET", "/api/v2/ref/locationCode/tiploc/bathspa");
|
||||||
|
})
|
||||||
|
|
||||||
|
test("Throws ValidationError for invalid CRS", async () => {
|
||||||
|
await expect(instance.lookupLocationReference("crs", "XYZA")).rejects.toThrow(ValidationError);
|
||||||
|
});
|
||||||
|
|
||||||
|
test("Throws ValidationError for invalid NLC", async () => {
|
||||||
|
await expect(instance.lookupLocationReference("nlc", "9999")).rejects.toThrow(ValidationError);
|
||||||
|
});
|
||||||
|
|
||||||
|
test("Throws error for unsupported type", async () => {
|
||||||
|
await expect(instance.lookupLocationReference("UNKNOWN" as ReferenceV2_LocationReferenceCodeType, "123"))
|
||||||
|
.rejects.toThrow(Error);
|
||||||
|
});
|
||||||
|
});
|
@ -1,4 +1,4 @@
|
|||||||
import { validateReasonCode } from "../inputValidation/inputValidation";
|
import { validateCrs, validateNlc, validateReasonCode, validateStanox, validateTiploc } from "../inputValidation/inputValidation";
|
||||||
import { ReferenceV2_LocationReferenceCodes, ReferenceV2_LocationReferenceCodeType, ReferenceV2_ReasonCode } from "../types/reference/ReferenceTypesV2";
|
import { ReferenceV2_LocationReferenceCodes, ReferenceV2_LocationReferenceCodeType, ReferenceV2_ReasonCode } from "../types/reference/ReferenceTypesV2";
|
||||||
import { BaseOwlBoardClient } from "./client";
|
import { BaseOwlBoardClient } from "./client";
|
||||||
|
|
||||||
@ -16,7 +16,20 @@ export class ReferenceClientV2 {
|
|||||||
}
|
}
|
||||||
|
|
||||||
async lookupLocationReference(type: ReferenceV2_LocationReferenceCodeType, referenceCode: string): Promise<ReferenceV2_LocationReferenceCodes> {
|
async lookupLocationReference(type: ReferenceV2_LocationReferenceCodeType, referenceCode: string): Promise<ReferenceV2_LocationReferenceCodes> {
|
||||||
// Validation Required Here
|
const validators: Record<ReferenceV2_LocationReferenceCodeType, (code: string) => boolean> = {
|
||||||
|
crs: validateCrs,
|
||||||
|
tiploc: validateTiploc,
|
||||||
|
nlc: validateNlc,
|
||||||
|
stanox: validateStanox,
|
||||||
|
};
|
||||||
|
|
||||||
|
const validate = validators[type];
|
||||||
|
if (!validate) {
|
||||||
|
throw new Error(`Unsupported code type: ${type}`);
|
||||||
|
}
|
||||||
|
|
||||||
|
validate(referenceCode);
|
||||||
|
|
||||||
const path = `/api/v2/ref/locationCode/${type}/${referenceCode}`
|
const path = `/api/v2/ref/locationCode/${type}/${referenceCode}`
|
||||||
return this.client.makeRequest("GET", path);
|
return this.client.makeRequest("GET", path);
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user