From b5d93456592a15a8bac358abcdce26dd1c9d7c0d Mon Sep 17 00:00:00 2001 From: Alex Holliday Date: Fri, 8 Nov 2024 10:48:48 +0800 Subject: [PATCH] Add missing test cases for pagespeed and hardware monitor types --- Server/tests/db/monitorModule.test.js | 102 +++++++++++++++++++++++++- 1 file changed, 101 insertions(+), 1 deletion(-) diff --git a/Server/tests/db/monitorModule.test.js b/Server/tests/db/monitorModule.test.js index 558dcb4d2..189c8a703 100644 --- a/Server/tests/db/monitorModule.test.js +++ b/Server/tests/db/monitorModule.test.js @@ -1,6 +1,8 @@ import sinon from "sinon"; import Monitor from "../../db/models/Monitor.js"; import Check from "../../db/models/Check.js"; +import PageSpeedCheck from "../../db/models/PageSpeedCheck.js"; +import HardwareCheck from "../../db/models/HardwareCheck.js"; import Notification from "../../db/models/Notification.js"; import { errorMessages } from "../../utils/messages.js"; @@ -37,7 +39,9 @@ describe("monitorModule", () => { monitorDeleteManyStub, monitorCountStub, monitorInsertManyStub, - checkFindStub; + checkFindStub, + pageSpeedCheckFindStub, + hardwareCheckFindStub; beforeEach(() => { monitorFindStub = sinon.stub(Monitor, "find"); monitorFindByIdStub = sinon.stub(Monitor, "findById"); @@ -50,6 +54,12 @@ describe("monitorModule", () => { checkFindStub = sinon.stub(Check, "find").returns({ sort: sinon.stub(), }); + pageSpeedCheckFindStub = sinon.stub(PageSpeedCheck, "find").returns({ + sort: sinon.stub(), + }); + hardwareCheckFindStub = sinon.stub(HardwareCheck, "find").returns({ + sort: sinon.stub(), + }); }); afterEach(() => { sinon.restore(); @@ -137,6 +147,96 @@ describe("monitorModule", () => { expect(monitor["30"]).to.equal(75); expect(monitor["90"]).to.equal(75); }); + it("should return monitors with stats for pagespeed type", async () => { + // Mock data + const mockMonitors = [ + { + _id: "monitor1", + type: "pagespeed", + toObject: () => ({ + _id: "monitor1", + type: "pagespeed", + name: "Test Monitor", + }), + }, + ]; + + const mockChecks = [ + { status: true }, + { status: true }, + { status: false }, + { status: true }, + ]; + + monitorFindStub.resolves(mockMonitors); + pageSpeedCheckFindStub.resolves(mockChecks); + + const result = await getAllMonitorsWithUptimeStats(); + + expect(result).to.be.an("array"); + expect(result).to.have.lengthOf(1); + + const monitor = result[0]; + expect(monitor).to.have.property("_id", "monitor1"); + expect(monitor).to.have.property("name", "Test Monitor"); + + // Check uptime percentages exist for all time periods + expect(monitor).to.have.property("1"); + expect(monitor).to.have.property("7"); + expect(monitor).to.have.property("30"); + expect(monitor).to.have.property("90"); + + // Verify uptime percentage calculation (3 successful out of 4 = 75%) + expect(monitor["1"]).to.equal(75); + expect(monitor["7"]).to.equal(75); + expect(monitor["30"]).to.equal(75); + expect(monitor["90"]).to.equal(75); + }); + it("should return monitors with stats for hardware type", async () => { + // Mock data + const mockMonitors = [ + { + _id: "monitor1", + type: "hardware", + toObject: () => ({ + _id: "monitor1", + type: "hardware", + name: "Test Monitor", + }), + }, + ]; + + const mockChecks = [ + { status: true }, + { status: true }, + { status: false }, + { status: true }, + ]; + + monitorFindStub.resolves(mockMonitors); + hardwareCheckFindStub.resolves(mockChecks); + + const result = await getAllMonitorsWithUptimeStats(); + + expect(result).to.be.an("array"); + expect(result).to.have.lengthOf(1); + + const monitor = result[0]; + expect(monitor).to.have.property("_id", "monitor1"); + expect(monitor).to.have.property("name", "Test Monitor"); + + // Check uptime percentages exist for all time periods + expect(monitor).to.have.property("1"); + expect(monitor).to.have.property("7"); + expect(monitor).to.have.property("30"); + expect(monitor).to.have.property("90"); + + // Verify uptime percentage calculation (3 successful out of 4 = 75%) + expect(monitor["1"]).to.equal(75); + expect(monitor["7"]).to.equal(75); + expect(monitor["30"]).to.equal(75); + expect(monitor["90"]).to.equal(75); + }); it("should handle errors appropriately", async () => { // Setup stub to throw error