BatteryAlertModule + BatteryAlertService wired into app.module like
the weather module. Every BATTERY_CHECK_INTERVAL_MS (default 60 s) the
service scans the node state backing GET /api/nodes and broadcasts a
single-packet '⚠️ @!<8-hex> battery low: <X>% (<name>)' alert for every
node at or below BATTERY_ALERT_THRESHOLD percent (default 20, <= on
purpose) not alerted within BATTERY_ALERT_COOLDOWN_MS (default 6 h,
in-memory map — resets on restart). Sends ride the pinned send channel
via MeshService.sendText like every other bot send.
20 lines
883 B
TypeScript
20 lines
883 B
TypeScript
import { Test } from '@nestjs/testing';
|
|
import { describe, expect, it } from 'vitest';
|
|
import { MeshService } from '../mesh/mesh.service.js';
|
|
import { BatteryAlertModule } from './battery.module.js';
|
|
import { BatteryAlertService } from './battery.service.js';
|
|
|
|
describe('DI wiring (module graph)', () => {
|
|
// compile() instantiates providers but does not run lifecycle hooks, so no TCP connection is opened.
|
|
it('resolves BatteryAlertService with MeshService provided by MeshModule', async () => {
|
|
process.env.MESH_DB_PATH = ':memory:'; // keep openMessageDb from touching the repo's ./data
|
|
const moduleRef = await Test.createTestingModule({
|
|
imports: [BatteryAlertModule],
|
|
}).compile();
|
|
expect(moduleRef.get(BatteryAlertService)).toBeInstanceOf(
|
|
BatteryAlertService,
|
|
);
|
|
expect(moduleRef.get(MeshService)).toBeInstanceOf(MeshService);
|
|
});
|
|
});
|