import { EventStatusService } from '../../backend/src/common/services/event-status.service'; describe('EventStatusService.getState', () => { const settings = { get: jest.fn() } as any; beforeEach(() => { settings.get.mockReset(); }); it('returns countdown with positive secondsToStart before start', async () => { const start = new Date(Date.now() + 60_000).toISOString(); const end = new Date(Date.now() + 120_000).toISOString(); settings.get.mockImplementation(async (k: string) => (k === 'eventStartUtc' ? start : end)); const svc = new EventStatusService(settings); const s = await svc.getState(); expect(s.state).toBe('countdown'); expect(s.secondsToStart).not.toBeNull(); expect(s.secondsToStart!).toBeGreaterThan(0); expect(s.secondsToEnd).toBeNull(); }); it('returns running with secondsToEnd inside window', async () => { const start = new Date(Date.now() - 30_000).toISOString(); const end = new Date(Date.now() + 60_000).toISOString(); settings.get.mockImplementation(async (k: string) => (k === 'eventStartUtc' ? start : end)); const svc = new EventStatusService(settings); const s = await svc.getState(); expect(s.state).toBe('running'); expect(s.secondsToEnd).not.toBeNull(); expect(s.secondsToStart).toBeNull(); }); it('returns stopped after end', async () => { const start = new Date(Date.now() - 120_000).toISOString(); const end = new Date(Date.now() - 60_000).toISOString(); settings.get.mockImplementation(async (k: string) => (k === 'eventStartUtc' ? start : end)); const svc = new EventStatusService(settings); const s = await svc.getState(); expect(s.state).toBe('stopped'); expect(s.secondsToStart).toBeNull(); expect(s.secondsToEnd).toBeNull(); }); it('returns unconfigured when settings are missing', async () => { settings.get.mockResolvedValue(''); const svc = new EventStatusService(settings); const s = await svc.getState(); expect(s.state).toBe('unconfigured'); expect(s.secondsToStart).toBeNull(); expect(s.secondsToEnd).toBeNull(); }); });