forked from wangziqi/gongxue-base
44 lines
1.4 KiB
TypeScript
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();
|
|
});
|
|
});
|