fix TS errors, add missing tests

This commit is contained in:
Alex Holliday committed 2026-04-10 12:33:08 -07:00
1 parent b515d688f4
commit 4d1af5e2b4
4 files changed
+62

No files matched your search

@@ -263,6 +263,10 @@ export class MonitorService implements IMonitorService {
type: monitor.type,
});
if (checksData.monitorType !== "hardware") {
throw new AppError({ message: "Unable to load hardware stats for this monitor", status: 500 });
}
const stats = {
aggregateData: checksData.aggregateData,
upChecks: checksData.upChecks,
@@ -301,6 +305,10 @@ export class MonitorService implements IMonitorService {
type: monitor.type,
});
if (checksData.monitorType !== "pagespeed") {
throw new AppError({ message: "Unable to load pagespeed stats for this monitor", status: 500 });
}
const monitorStats = await this.monitorStatsRepository.findByMonitorId(monitor.id);
return {
@@ -138,6 +138,19 @@ export class DockerProvider implements IStatusProvider<DockerStatusPayload> {
};
}
if (!response) {
return {
monitorId: monitor.id,
teamId: monitor.teamId,
type: monitor.type,
status: false,
code: NETWORK_ERROR,
message: "No response from Docker container inspect",
responseTime,
payload: null,
};
}
return {
monitorId: monitor.id,
teamId: monitor.teamId,
@@ -186,6 +186,21 @@ describe("DockerProvider", () => {
expect(result.status).toBe(false);
});
it("returns NETWORK_ERROR when inspect response is null", async () => {
const logger = createMockLogger();
const inspect = jest.fn().mockResolvedValue(null);
const getContainer = jest.fn().mockReturnValue({ inspect });
const instance = { listContainers: jest.fn().mockResolvedValue([makeContainer()]), getContainer };
const DockerLib = jest.fn().mockReturnValue(instance) as any;
const provider = new DockerProvider(logger as any, DockerLib);
const result = await provider.handle(makeMonitor());
expect(result.status).toBe(false);
expect(result.code).toBe(NETWORK_ERROR);
expect(result.message).toBe("No response from Docker container inspect");
});
it("returns false status when inspect response has no State", async () => {
const { provider } = createProvider({ inspectResult: {} });
@@ -359,6 +359,19 @@ describe("MonitorService", () => {
"monitors are not supported for hardware details"
);
});
it("throws 500 when checksData monitorType is not hardware", async () => {
const monitorsRepository = createMonitorsRepositoryMock();
const checksRepository = createChecksRepositoryMock();
const monitor = makeMonitor({ type: "hardware" });
(monitorsRepository.findById as jest.Mock).mockResolvedValue(monitor);
(checksRepository.findByDateRangeAndMonitorId as jest.Mock).mockResolvedValue({ monitorType: "http" });
const { service } = createService({ monitorsRepository, checksRepository });
await expect(service.getHardwareDetailsById({ teamId: TEAM_ID, monitorId: MONITOR_ID, dateRange: "recent" })).rejects.toThrow(
"Unable to load hardware stats for this monitor"
);
});
});
describe("getPageSpeedDetailsById", () => {
@@ -403,6 +416,19 @@ describe("MonitorService", () => {
);
});
it("throws 500 when checksData monitorType is not pagespeed", async () => {
const monitorsRepository = createMonitorsRepositoryMock();
const checksRepository = createChecksRepositoryMock();
const monitor = makeMonitor({ type: "pagespeed" });
(monitorsRepository.findById as jest.Mock).mockResolvedValue(monitor);
(checksRepository.findByDateRangeAndMonitorId as jest.Mock).mockResolvedValue({ monitorType: "http" });
const { service } = createService({ monitorsRepository, checksRepository });
await expect(service.getPageSpeedDetailsById({ teamId: TEAM_ID, monitorId: MONITOR_ID, dateRange: "recent" })).rejects.toThrow(
"Unable to load pagespeed stats for this monitor"
);
});
it("handles pagespeed with different date range", async () => {
const monitorsRepository = createMonitorsRepositoryMock();
const checksRepository = createChecksRepositoryMock();