import { BadRequestException } from '@nestjs/common'; import { RoomsService } from './rooms.service'; function createService(room: { id: number; gender: '男' | '女' | null }, activeCount: number) { const repo = { findOne: jest.fn().mockResolvedValue(room), update: jest.fn(), }; const occRepo = { count: jest.fn().mockResolvedValue(activeCount) }; const service = new RoomsService( repo as never, occRepo as never, {} as never, {} as never, {} as never, ); return { service, repo, occRepo }; } describe('RoomsService — room gender maintenance', () => { it('allows an empty room gender to be changed or cleared', async () => { const { service, repo } = createService({ id: 1, gender: '男' }, 0); await service.update(1, { gender: null }); expect(repo.update).toHaveBeenCalledWith(1, { gender: null }); }); it('rejects changing gender while students are living in the room', async () => { const { service, repo } = createService({ id: 1, gender: '男' }, 1); await expect(service.update(1, { gender: '女' })).rejects.toBeInstanceOf(BadRequestException); expect(repo.update).not.toHaveBeenCalled(); }); it('does not query occupants when gender is unchanged or omitted', async () => { const { service, occRepo } = createService({ id: 1, gender: '男' }, 1); await service.update(1, { roomType: '四人间' }); expect(occRepo.count).not.toHaveBeenCalled(); }); });