Files
BYW-VoiceHub/tests/server/grade-class-options.test.ts
T

45 lines
1.4 KiB
TypeScript

import assert from 'node:assert/strict'
import test from 'node:test'
import {
resolveGradeClassOptions,
smartSort
} from '../../server/utils/grade-class-core.ts'
test('配置非空时优先使用配置项', () => {
const config = [{ grade: '高一', class: '一班' }]
const fallback = [{ grade: '高二', class: '二班' }]
assert.deepEqual(resolveGradeClassOptions(config, fallback), config)
})
test('配置为空时回退到用户提取并按学段排序', () => {
const config = []
const fallback = [
{ grade: '高二', class: '二班' },
{ grade: '高一', class: '一班' }
]
const result = resolveGradeClassOptions(config, fallback)
assert.deepEqual(result.map((item) => item.grade), ['高一', '高二'])
})
test('过滤年级或班级为空的数据项', () => {
const items = [
{ grade: '高一', class: '一班' },
{ grade: '', class: '二班' },
{ grade: '高一', class: '' }
]
const result = resolveGradeClassOptions(items, [])
assert.equal(result.length, 1)
assert.deepEqual(result[0], { grade: '高一', class: '一班' })
})
test('smartSort 按学段权重排序,未知学段按字典序', () => {
assert.equal(smartSort('初一', '高一') < 0, true)
assert.equal(smartSort('高一', '高二') < 0, true)
assert.equal(smartSort('教师', '高一') > 0, true)
const values = ['十年级', '二年级']
values.sort(smartSort)
assert.deepEqual(values, ['二年级', '十年级'])
})