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); } }); }); });