import { AttendanceCalendarService } from './attendance-calendar.service'; describe('AttendanceCalendarService — 默认周起点', () => { function createService() { return new AttendanceCalendarService({} as never, {} as never); } afterEach(() => jest.useRealTimers()); it('未传 weekStart 时默认本周一(中国日期)', async () => { jest.useFakeTimers().setSystemTime(new Date('2026-08-05T10:00:00+08:00')); // 周三 const service = createService(); const spy = jest .spyOn(service as never, 'buildCalendar' as never) .mockResolvedValue([] as never); await service.getCalendar({ classId: 1 } as never); expect(spy).toHaveBeenCalledWith(1, '2026-08-03'); }); it('周日晚间仍归入本周一', async () => { jest.useFakeTimers().setSystemTime(new Date('2026-08-09T22:00:00+08:00')); // 周日晚上 const service = createService(); const spy = jest .spyOn(service as never, 'buildCalendar' as never) .mockResolvedValue([] as never); await service.getCalendar({ classId: 1 } as never); expect(spy).toHaveBeenCalledWith(1, '2026-08-03'); }); it('传入 weekStart 时原样透传', async () => { const service = createService(); const spy = jest .spyOn(service as never, 'buildCalendar' as never) .mockResolvedValue([] as never); await service.getCalendar({ classId: 1, weekStart: '2026-08-10' } as never); expect(spy).toHaveBeenCalledWith(1, '2026-08-10'); }); });