Files
gongxue-base/apps/server/src/rooms/rooms.gender.spec.ts

44 lines
1.4 KiB
TypeScript

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();
});
});