mirror of
https://gitee.com/wanwujie/sub2api
synced 2026-05-05 05:30:44 +08:00
75 lines
2.4 KiB
TypeScript
75 lines
2.4 KiB
TypeScript
import { afterEach, describe, expect, it } from 'vitest'
|
|
|
|
import {
|
|
DEFAULT_TABLE_PAGE_SIZE,
|
|
DEFAULT_TABLE_PAGE_SIZE_OPTIONS,
|
|
getConfiguredTableDefaultPageSize,
|
|
getConfiguredTablePageSizeOptions,
|
|
normalizeTablePageSize
|
|
} from '@/utils/tablePreferences'
|
|
|
|
describe('tablePreferences', () => {
|
|
afterEach(() => {
|
|
delete window.__APP_CONFIG__
|
|
})
|
|
|
|
it('returns built-in defaults when app config is missing', () => {
|
|
expect(getConfiguredTableDefaultPageSize()).toBe(DEFAULT_TABLE_PAGE_SIZE)
|
|
expect(getConfiguredTablePageSizeOptions()).toEqual(DEFAULT_TABLE_PAGE_SIZE_OPTIONS)
|
|
})
|
|
|
|
it('uses configured defaults when app config is valid', () => {
|
|
window.__APP_CONFIG__ = {
|
|
table_default_page_size: 50,
|
|
table_page_size_options: [20, 50, 100]
|
|
} as any
|
|
|
|
expect(getConfiguredTableDefaultPageSize()).toBe(50)
|
|
expect(getConfiguredTablePageSizeOptions()).toEqual([20, 50, 100])
|
|
})
|
|
|
|
it('allows default page size outside selectable options', () => {
|
|
window.__APP_CONFIG__ = {
|
|
table_default_page_size: 1000,
|
|
table_page_size_options: [20, 50, 100]
|
|
} as any
|
|
|
|
expect(getConfiguredTableDefaultPageSize()).toBe(1000)
|
|
expect(getConfiguredTablePageSizeOptions()).toEqual([20, 50, 100])
|
|
expect(normalizeTablePageSize(1000)).toBe(100)
|
|
expect(normalizeTablePageSize(35)).toBe(50)
|
|
})
|
|
|
|
it('normalizes invalid options without rewriting the configured default itself', () => {
|
|
window.__APP_CONFIG__ = {
|
|
table_default_page_size: 35,
|
|
table_page_size_options: [1001, 50, 10, 10, 2, 0]
|
|
} as any
|
|
|
|
expect(getConfiguredTableDefaultPageSize()).toBe(35)
|
|
expect(getConfiguredTablePageSizeOptions()).toEqual([10, 50])
|
|
expect(normalizeTablePageSize(undefined)).toBe(50)
|
|
})
|
|
|
|
it('normalizes page size against configured options by rounding up', () => {
|
|
window.__APP_CONFIG__ = {
|
|
table_default_page_size: 20,
|
|
table_page_size_options: [20, 50, 1000]
|
|
} as any
|
|
|
|
expect(normalizeTablePageSize(20)).toBe(20)
|
|
expect(normalizeTablePageSize(30)).toBe(50)
|
|
expect(normalizeTablePageSize(100)).toBe(1000)
|
|
expect(normalizeTablePageSize(1500)).toBe(1000)
|
|
expect(normalizeTablePageSize(undefined)).toBe(20)
|
|
})
|
|
|
|
it('keeps built-in selectable defaults at 10, 20, 50, 100', () => {
|
|
window.__APP_CONFIG__ = {
|
|
table_default_page_size: 1000
|
|
} as any
|
|
|
|
expect(getConfiguredTablePageSizeOptions()).toEqual([10, 20, 50, 100])
|
|
})
|
|
})
|