remvoe dead code from monitor service
This commit is contained in:
1 parent
6886fc75de
commit
1b746d0f0a
3 files changed
+10
-121
No files matched your search
@@ -364,7 +364,6 @@ export const initializeServices = async ({
|
||||
});
|
||||
const monitorService = new MonitorService({
|
||||
jobQueue: superSimpleQueue,
|
||||
emailService,
|
||||
logger,
|
||||
games,
|
||||
monitorsRepository,
|
||||
|
||||
@@ -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<Monitor[]> => {
|
||||
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<Monitor> => {
|
||||
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<Monitor[] | null> => {
|
||||
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<string[]> => {
|
||||
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<Monitor> }) => {
|
||||
|
||||
@@ -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,
|
||||
|
||||
Reference in new issue
Block a user