From 1b746d0f0a9bdfd88f24cb772cef282c00045132 Mon Sep 17 00:00:00 2001 From: Alex Holliday Date: Fri, 10 Apr 2026 11:13:12 -0700 Subject: [PATCH] remvoe dead code from monitor service --- server/src/config/services.ts | 1 - server/src/service/business/monitorService.ts | 36 ++----- .../test/unit/services/monitorService.test.ts | 94 +------------------ 3 files changed, 10 insertions(+), 121 deletions(-) diff --git a/server/src/config/services.ts b/server/src/config/services.ts index 8ed72862a..eae4ccd7e 100644 --- a/server/src/config/services.ts +++ b/server/src/config/services.ts @@ -364,7 +364,6 @@ export const initializeServices = async ({ }); const monitorService = new MonitorService({ jobQueue: superSimpleQueue, - emailService, logger, games, monitorsRepository, diff --git a/server/src/service/business/monitorService.ts b/server/src/service/business/monitorService.ts index 71c9d9d90..5d6a1280f 100644 --- a/server/src/service/business/monitorService.ts +++ b/server/src/service/business/monitorService.ts @@ -23,7 +23,6 @@ import demoMonitorsData from "@/utils/demoMonitors.json" with { type: "json" }; import { AppError } from "@/utils/AppError.js"; import type { ImportedMonitor } from "@/validation/monitorValidation.js"; import { ISuperSimpleQueue } from "../infrastructure/SuperSimpleQueue/SuperSimpleQueue.js"; -import { IEmailService } from "../infrastructure/emailService.js"; import { ILogger } from "@/utils/logger.js"; const SERVICE_NAME = "MonitorService"; @@ -91,7 +90,6 @@ export class MonitorService implements IMonitorService { static SERVICE_NAME = SERVICE_NAME; private jobQueue: ISuperSimpleQueue; - private emailService: IEmailService; private logger: ILogger; private games: GamesMap; private monitorsRepository: IMonitorsRepository; @@ -103,7 +101,6 @@ export class MonitorService implements IMonitorService { constructor({ jobQueue, - emailService, logger, games, monitorsRepository, @@ -114,7 +111,6 @@ export class MonitorService implements IMonitorService { incidentsRepository, }: { jobQueue: ISuperSimpleQueue; - emailService: IEmailService; logger: ILogger; games: GamesMap; monitorsRepository: IMonitorsRepository; @@ -125,7 +121,6 @@ export class MonitorService implements IMonitorService { incidentsRepository: IIncidentsRepository; }) { this.jobQueue = jobQueue; - this.emailService = emailService; this.logger = logger; this.games = games; this.monitorsRepository = monitorsRepository; @@ -185,8 +180,7 @@ export class MonitorService implements IMonitorService { }; addDemoMonitors = async ({ userId, teamId }: { userId: string; teamId: string }): Promise => { - const demoData = demoMonitorsData; - const monitors = demoData.map((monitor) => ({ + const monitors = demoMonitorsData.map((monitor) => ({ userId, teamId, name: monitor.name, @@ -214,7 +208,7 @@ export class MonitorService implements IMonitorService { if (!monitor) { throw new AppError({ message: `Monitor with ID ${monitorId} not found.`, status: 404 }); } - const rangeKey = (dateRange as DateRangeKey) ?? "recent"; + const rangeKey = dateRange as DateRangeKey; const { start, end } = this.getDateRange(rangeKey); const checksData = await this.checksRepository.findByDateRangeAndMonitorId(monitor.id, start, end, this.getDateFormat(rangeKey), { type: monitor.type, @@ -263,16 +257,12 @@ export class MonitorService implements IMonitorService { throw new AppError({ message: `${monitor.type} monitors are not supported for hardware details`, status: 400 }); } - const rangeKey = (dateRange as DateRangeKey) ?? "recent"; + const rangeKey = dateRange as DateRangeKey; const { start, end } = this.getDateRange(rangeKey); const checksData = await this.checksRepository.findByDateRangeAndMonitorId(monitor.id, start, end, this.getDateFormat(rangeKey), { 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, @@ -305,16 +295,12 @@ export class MonitorService implements IMonitorService { throw new AppError({ message: `${monitor.type} monitors are not supported for pagespeed details`, status: 400 }); } - const rangeKey = (dateRange as DateRangeKey) ?? "recent"; + const rangeKey = dateRange as DateRangeKey; const { start, end } = this.getDateRange(rangeKey); const checksData = await this.checksRepository.findByDateRangeAndMonitorId(monitor.id, start, end, this.getDateFormat(rangeKey), { 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 { @@ -346,7 +332,7 @@ export class MonitorService implements IMonitorService { return { groupedGeoChecks: [] }; } - const rangeKey = (dateRange as DateRangeKey) ?? "recent"; + const rangeKey = dateRange as DateRangeKey; const { start, end } = this.getDateRange(rangeKey); const groupedGeoChecks = await this.geoChecksRepository.findGroupedByMonitorIdAndDateRange( monitor.id, @@ -360,8 +346,7 @@ export class MonitorService implements IMonitorService { }; getMonitorById = async ({ teamId, monitorId }: { teamId: string; monitorId: string }): Promise => { - const monitor = await this.monitorsRepository.findById(monitorId, teamId); - return monitor; + return await this.monitorsRepository.findById(monitorId, teamId); }; getMonitorsByTeamId = async ({ @@ -373,11 +358,7 @@ export class MonitorService implements IMonitorService { type?: MonitorType | MonitorType[]; filter?: string; }): Promise => { - const monitors = await this.monitorsRepository.findByTeamId(teamId, { - type, - filter, - }); - return monitors; + return await this.monitorsRepository.findByTeamId(teamId, { type, filter }); }; getMonitorsWithChecksByTeamId = async ({ @@ -432,8 +413,7 @@ export class MonitorService implements IMonitorService { }; getGroupsByTeamId = async ({ teamId }: { teamId: string }): Promise => { - const groups = await this.monitorsRepository.findGroupsByTeamId(teamId); - return groups; + return await this.monitorsRepository.findGroupsByTeamId(teamId); }; editMonitor = async ({ teamId, monitorId, body }: { teamId: string; monitorId: string; body: Partial }) => { diff --git a/server/test/unit/services/monitorService.test.ts b/server/test/unit/services/monitorService.test.ts index 979fc4a05..2b3d9c997 100644 --- a/server/test/unit/services/monitorService.test.ts +++ b/server/test/unit/services/monitorService.test.ts @@ -63,11 +63,6 @@ const createJobQueueMock = () => ({ deleteJob: jest.fn(), }); -const createEmailServiceMock = () => ({ - buildEmail: jest.fn(), - sendEmail: jest.fn(), -}); - const TEAM_ID = "team-1"; const MONITOR_ID = "monitor-1"; const USER_ID = "user-1"; @@ -104,7 +99,6 @@ const createService = ( const logger = overrides.logger ?? createMockLogger(); const service = new MonitorService({ jobQueue: jobQueue as any, - emailService: createEmailServiceMock() as any, logger: logger as any, games: (overrides.games ?? { cs2: { name: "Counter-Strike 2" } }) as any, monitorsRepository: overrides.monitorsRepository ?? createMonitorsRepositoryMock(), @@ -296,27 +290,6 @@ describe("MonitorService", () => { ); }); - it("defaults to 'recent' when dateRange is nullish", async () => { - const monitorsRepository = createMonitorsRepositoryMock(); - const checksRepository = createChecksRepositoryMock(); - const monitorStatsRepository = createMonitorStatsRepositoryMock(); - const monitor = makeMonitor(); - (monitorsRepository.findById as jest.Mock).mockResolvedValue(monitor); - (checksRepository.findByDateRangeAndMonitorId as jest.Mock).mockResolvedValue({ - monitorType: "http", - groupedChecks: [], - groupedUpChecks: [], - groupedDownChecks: [], - uptimePercentage: 1, - avgResponseTime: 50, - }); - (monitorStatsRepository.findByMonitorId as jest.Mock).mockResolvedValue(null); - - const { service } = createService({ monitorsRepository, checksRepository, monitorStatsRepository }); - await service.getUptimeDetailsById({ teamId: TEAM_ID, monitorId: MONITOR_ID, dateRange: undefined as any }); - expect(checksRepository.findByDateRangeAndMonitorId).toHaveBeenCalled(); - }); - it("uses different date ranges correctly", async () => { for (const dateRange of ["recent", "day", "week", "month", "all"] as const) { const monitorsRepository = createMonitorsRepositoryMock(); @@ -386,40 +359,6 @@ 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" - ); - }); - - it("defaults to 'recent' when dateRange is nullish", async () => { - const monitorsRepository = createMonitorsRepositoryMock(); - const checksRepository = createChecksRepositoryMock(); - const monitorStatsRepository = createMonitorStatsRepositoryMock(); - const monitor = makeMonitor({ type: "hardware" }); - (monitorsRepository.findById as jest.Mock).mockResolvedValue(monitor); - (checksRepository.findByDateRangeAndMonitorId as jest.Mock).mockResolvedValue({ - monitorType: "hardware", - aggregateData: { totalChecks: 1 }, - upChecks: { totalChecks: 1 }, - checks: [], - }); - (monitorStatsRepository.findByMonitorId as jest.Mock).mockResolvedValue(null); - const { service } = createService({ monitorsRepository, checksRepository, monitorStatsRepository }); - - await service.getHardwareDetailsById({ teamId: TEAM_ID, monitorId: MONITOR_ID, dateRange: undefined as any }); - expect(checksRepository.findByDateRangeAndMonitorId).toHaveBeenCalled(); - }); }); describe("getPageSpeedDetailsById", () => { @@ -464,22 +403,7 @@ 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("defaults to 'recent' when dateRange is nullish", async () => { + it("handles pagespeed with different date range", async () => { const monitorsRepository = createMonitorsRepositoryMock(); const checksRepository = createChecksRepositoryMock(); const monitorStatsRepository = createMonitorStatsRepositoryMock(); @@ -492,7 +416,7 @@ describe("MonitorService", () => { (monitorStatsRepository.findByMonitorId as jest.Mock).mockResolvedValue(null); const { service } = createService({ monitorsRepository, checksRepository, monitorStatsRepository }); - await service.getPageSpeedDetailsById({ teamId: TEAM_ID, monitorId: MONITOR_ID, dateRange: undefined as any }); + await service.getPageSpeedDetailsById({ teamId: TEAM_ID, monitorId: MONITOR_ID, dateRange: "week" }); expect(checksRepository.findByDateRangeAndMonitorId).toHaveBeenCalled(); }); }); @@ -558,19 +482,6 @@ describe("MonitorService", () => { expect(geoChecksRepository.findGroupedByMonitorIdAndDateRange).toHaveBeenCalled(); }); - it("defaults to 'recent' when dateRange is nullish", async () => { - const monitorsRepository = createMonitorsRepositoryMock(); - const geoChecksRepository = createGeoChecksRepositoryMock(); - const monitor = makeMonitor({ type: "http", geoCheckEnabled: true }); - (monitorsRepository.findById as jest.Mock).mockResolvedValue(monitor); - (geoChecksRepository.findGroupedByMonitorIdAndDateRange as jest.Mock).mockResolvedValue([]); - - const { service } = createService({ monitorsRepository, geoChecksRepository }); - const result = await service.getGeoChecksByMonitorId({ teamId: TEAM_ID, monitorId: MONITOR_ID, dateRange: undefined as any }); - expect(result.groupedGeoChecks).toEqual([]); - expect(geoChecksRepository.findGroupedByMonitorIdAndDateRange).toHaveBeenCalled(); - }); - it("works with ping monitor type", async () => { const monitorsRepository = createMonitorsRepositoryMock(); const geoChecksRepository = createGeoChecksRepositoryMock(); @@ -1391,7 +1302,6 @@ describe("MonitorService", () => { const logger = createMockLogger(); const service = new MonitorService({ jobQueue: jobQueue as any, - emailService: createEmailServiceMock() as any, logger: logger as any, games: {} as any, monitorsRepository,