Files
Checkmate/server/tests/db/notificationModule.test.js
Alex Holliday bfa6832beb format
2025-07-21 10:34:16 -07:00

77 lines
2.5 KiB
JavaScript
Executable File

import sinon from "sinon";
import Notification from "../../db/models/Notification.js";
import { createNotification, getNotificationsByMonitorId, deleteNotificationsByMonitorId } from "../../db/mongo/modules/notificationModule.js";
describe("notificationModule", function () {
const mockNotification = {
monitorId: "123",
};
const mockNotifications = [mockNotification];
let notificationSaveStub, notificationFindStub, notificationDeleteManyStub;
beforeEach(function () {
notificationSaveStub = sinon.stub(Notification.prototype, "save").resolves();
notificationFindStub = sinon.stub(Notification, "find").resolves();
notificationDeleteManyStub = sinon.stub(Notification, "deleteMany").resolves();
});
afterEach(function () {
sinon.restore();
});
describe("createNotification", function () {
it("should create a new notification", async function () {
const notificationData = { _id: "123", name: "test" };
notificationSaveStub.resolves(notificationData);
const res = await createNotification(notificationData);
expect(res).to.deep.equal(notificationData);
});
it("should handle an error", async function () {
const err = new Error("test error");
notificationSaveStub.rejects(err);
try {
await createNotification(mockNotification);
} catch (error) {
expect(error).to.deep.equal(err);
}
});
});
describe("getNotificationsByMonitorId", function () {
it("should return notifications by monitor ID", async function () {
notificationFindStub.resolves(mockNotifications);
const res = await getNotificationsByMonitorId(mockNotification.monitorId);
expect(res).to.deep.equal(mockNotifications);
});
it("should handle an error", async function () {
const err = new Error("test error");
notificationFindStub.rejects(err);
try {
await getNotificationsByMonitorId(mockNotification.monitorId);
} catch (error) {
expect(error).to.deep.equal(err);
}
});
});
describe("deleteNotificationsByMonitorId", function () {
it("should delete notifications by monitor ID", async function () {
notificationDeleteManyStub.resolves({ deletedCount: mockNotifications.length });
const res = await deleteNotificationsByMonitorId(mockNotification.monitorId);
expect(res).to.deep.equal(mockNotifications.length);
});
it("should handle an error", async function () {
const err = new Error("test error");
notificationDeleteManyStub.rejects(err);
try {
await deleteNotificationsByMonitorId(mockNotification.monitorId);
} catch (error) {
expect(error).to.deep.equal(err);
}
});
});
});