Merge pull request #3808 from anjupathak03/fix/tag-filtering

test: cover monitor tag filtering
This commit is contained in:
Alexander Holliday authored and GitHub committed 2026-07-31 10:06:59 -07:00
commit 955c400731
1 file changed
+54
@@ -0,0 +1,54 @@
import { afterAll, beforeAll, beforeEach, describe, expect, it } from "@jest/globals";
import mongoose from "mongoose";
import { MongoMemoryServer } from "mongodb-memory-server";
import { MonitorModel } from "../../src/domain/monitors/monitor.model.ts";
import MongoMonitorsRepository from "../../src/domain/monitors/monitor.repository.mongo.ts";
let mongod: MongoMemoryServer;
beforeAll(async () => {
mongod = await MongoMemoryServer.create();
await mongoose.connect(mongod.getUri());
await MonitorModel.init();
}, 120_000);
afterAll(async () => {
await mongoose.disconnect();
await mongod.stop();
});
beforeEach(async () => {
await MonitorModel.deleteMany({});
});
const seedMonitor = (teamId: mongoose.Types.ObjectId, name: string, tags: mongoose.Types.ObjectId[]) =>
MonitorModel.create({
userId: new mongoose.Types.ObjectId(),
teamId,
name,
type: "http",
url: "https://example.com",
tags,
});
describe("MongoMonitorsRepository", () => {
describe("tag filtering", () => {
it("matches ObjectId tag references when filters arrive as query strings", async () => {
const repo = new MongoMonitorsRepository();
const teamId = new mongoose.Types.ObjectId();
const selectedTagId = new mongoose.Types.ObjectId();
const otherTagId = new mongoose.Types.ObjectId();
await seedMonitor(teamId, "selected", [selectedTagId]);
await seedMonitor(teamId, "not-selected", [otherTagId]);
await seedMonitor(new mongoose.Types.ObjectId(), "other-team", [selectedTagId]);
const tags = selectedTagId.toString();
const monitors = await repo.findByTeamIdWithStats(teamId.toString(), { tags });
const summary = await repo.findMonitorsSummaryByTeamId(teamId.toString(), { tags });
expect(monitors.map((monitor) => monitor.name)).toEqual(["selected"]);
expect(summary.totalMonitors).toBe(1);
});
});
});