forked from wangziqi/gongxue-base
Squash merge PR #23. Included changes: - complete occupancy check-in required fields/default payload - improve responsive admin management pages - fix attendance edge cases and attendance period config - refine wallet/finance-related workflow handling Checks: - npm run typecheck -w apps/admin - npm run typecheck -w apps/server
42 lines
1.2 KiB
TypeScript
42 lines
1.2 KiB
TypeScript
import { describe, expect, it } from 'vitest';
|
|
import { buildDepositStudentOption, buildDepositStudentOptions } from './deposit-student-option';
|
|
|
|
describe('deposit student option', () => {
|
|
it('uses the student number as the non-sensitive identifier', () => {
|
|
expect(buildDepositStudentOption({ id: 23, name: '张三', studentNo: 'S2026001' })).toEqual({
|
|
value: 23,
|
|
label: '张三 (S2026001)',
|
|
});
|
|
});
|
|
|
|
it('falls back to the internal id when the student number is missing', () => {
|
|
expect(buildDepositStudentOption({ id: 23, name: '张三', studentNo: null })).toEqual({
|
|
value: 23,
|
|
label: '张三 (#23)',
|
|
});
|
|
});
|
|
|
|
it('uses lookup rows without requiring a status field', () => {
|
|
expect(buildDepositStudentOptions([{ id: 23, name: '张三', studentNo: 'S2026001' }])).toEqual([
|
|
{
|
|
value: 23,
|
|
label: '张三 (S2026001)',
|
|
},
|
|
]);
|
|
});
|
|
|
|
it('includes room type when available', () => {
|
|
expect(
|
|
buildDepositStudentOption({
|
|
id: 23,
|
|
name: '张三',
|
|
studentNo: 'S2026001',
|
|
roomType: '四人间',
|
|
}),
|
|
).toEqual({
|
|
value: 23,
|
|
label: '张三 (S2026001) - 四人间',
|
|
});
|
|
});
|
|
});
|