forked from wangziqi/gongxue-base
59 lines
2.1 KiB
TypeScript
59 lines
2.1 KiB
TypeScript
import { describe, expect, it } from 'vitest';
|
|
import {
|
|
archiveViewPolicy,
|
|
expenseStatusForView,
|
|
occupancyParamsForView,
|
|
occupancyViewPolicy,
|
|
selectArchiveRecords,
|
|
shouldClearSelectionOnViewChange,
|
|
} from './archive-view';
|
|
|
|
describe('归档数据视图', () => {
|
|
it('正常视图与归档视图不会混合记录', () => {
|
|
const records = [
|
|
{ id: 1, status: 'active' },
|
|
{ id: 2, status: 'graduated' },
|
|
{ id: 3, status: 'archived' },
|
|
];
|
|
|
|
expect(selectArchiveRecords(records, 'active').map((item) => item.id)).toEqual([1, 2]);
|
|
expect(selectArchiveRecords(records, 'archived').map((item) => item.id)).toEqual([3]);
|
|
});
|
|
|
|
it('费用视图映射为后端 status 查询', () => {
|
|
expect(expenseStatusForView('active')).toBe('active');
|
|
expect(expenseStatusForView('archived')).toBe('archived');
|
|
});
|
|
|
|
it('入住三态分别映射为在住、全部活动记录和归档记录', () => {
|
|
expect(occupancyParamsForView('active')).toEqual({ active: 'true', status: 'active' });
|
|
expect(occupancyParamsForView('all')).toEqual({ active: undefined, status: 'active' });
|
|
expect(occupancyParamsForView('archived')).toEqual({
|
|
active: undefined,
|
|
status: 'archived',
|
|
});
|
|
});
|
|
|
|
it('正常与归档视图的批量动作互斥,且归档视图只读', () => {
|
|
expect(archiveViewPolicy('active')).toEqual({ batchAction: 'archive', readonly: false });
|
|
expect(archiveViewPolicy('archived')).toEqual({ batchAction: 'restore', readonly: true });
|
|
});
|
|
|
|
it('入住三态分别只提供退宿、归档和恢复动作', () => {
|
|
expect(occupancyViewPolicy('active')).toEqual({
|
|
batchAction: 'checkout',
|
|
readonly: false,
|
|
});
|
|
expect(occupancyViewPolicy('all')).toEqual({ batchAction: 'archive', readonly: false });
|
|
expect(occupancyViewPolicy('archived')).toEqual({
|
|
batchAction: 'restore',
|
|
readonly: true,
|
|
});
|
|
});
|
|
|
|
it('只有实际切换视图时才要求清空选择', () => {
|
|
expect(shouldClearSelectionOnViewChange('active', 'archived')).toBe(true);
|
|
expect(shouldClearSelectionOnViewChange('archived', 'archived')).toBe(false);
|
|
});
|
|
});
|