feat: add Jinshuju student sync
All checks were successful
CI / check (pull_request) Successful in 2m14s
All checks were successful
CI / check (pull_request) Successful in 2m14s
This commit is contained in:
40
apps/server/src/rbac/rbac.teachers.spec.ts
Normal file
40
apps/server/src/rbac/rbac.teachers.spec.ts
Normal file
@@ -0,0 +1,40 @@
|
||||
import { RbacService } from './rbac.service';
|
||||
|
||||
describe('RbacService teacher listing', () => {
|
||||
it('queries only teacher roles, excluding administrators', async () => {
|
||||
const queryBuilder = {
|
||||
leftJoinAndSelect: jest.fn(),
|
||||
where: jest.fn(),
|
||||
andWhere: jest.fn(),
|
||||
getCount: jest.fn().mockResolvedValue(0),
|
||||
orderBy: jest.fn(),
|
||||
skip: jest.fn(),
|
||||
take: jest.fn(),
|
||||
getMany: jest.fn().mockResolvedValue([]),
|
||||
};
|
||||
for (const method of ['leftJoinAndSelect', 'where', 'andWhere', 'orderBy', 'skip', 'take'] as const) {
|
||||
queryBuilder[method].mockReturnValue(queryBuilder);
|
||||
}
|
||||
const userRepo = { createQueryBuilder: jest.fn().mockReturnValue(queryBuilder) };
|
||||
const service = new RbacService(
|
||||
{} as never,
|
||||
{} as never,
|
||||
userRepo as never,
|
||||
{} as never,
|
||||
{} as never,
|
||||
{} as never,
|
||||
{} as never,
|
||||
{} as never,
|
||||
);
|
||||
|
||||
await service.getTeachers();
|
||||
|
||||
expect(queryBuilder.where).toHaveBeenCalledWith(
|
||||
'(role.code IN (:...roleCodes) OR role.name IN (:...roleNames))',
|
||||
{
|
||||
roleCodes: ['teacher'],
|
||||
roleNames: ['任课老师', '老师'],
|
||||
},
|
||||
);
|
||||
});
|
||||
});
|
||||
Reference in New Issue
Block a user