feat: align with upstream 1.5.9.9
This commit is contained in:
@@ -0,0 +1,45 @@
|
||||
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, ['二年级', '十年级'])
|
||||
})
|
||||
Reference in New Issue
Block a user