38 lines
1.3 KiB
TypeScript
38 lines
1.3 KiB
TypeScript
import { describe, expect, it } from 'vitest'
|
|
import {
|
|
normalizeReleaseChannel,
|
|
serializeReleaseChannel,
|
|
type ReleaseChannel,
|
|
} from './releaseChannel'
|
|
|
|
describe('releaseChannel', () => {
|
|
it('normalizes only alpha explicitly', () => {
|
|
expect(normalizeReleaseChannel('alpha')).toBe('alpha')
|
|
expect(normalizeReleaseChannel(' ALPHA ')).toBe('alpha')
|
|
})
|
|
|
|
it('falls back to stable for legacy or invalid values', () => {
|
|
expect(normalizeReleaseChannel(null)).toBe('stable')
|
|
expect(normalizeReleaseChannel('stable')).toBe('stable')
|
|
expect(normalizeReleaseChannel('beta')).toBe('stable')
|
|
expect(normalizeReleaseChannel('invalid')).toBe('stable')
|
|
})
|
|
|
|
it('serializes stable back to the persisted default shape', () => {
|
|
expect(serializeReleaseChannel('stable')).toBeNull()
|
|
expect(serializeReleaseChannel('alpha')).toBe('alpha')
|
|
})
|
|
|
|
it('roundtrips persisted values through the normalized channel model', () => {
|
|
const channels: Array<[string | null, ReleaseChannel]> = [
|
|
['alpha', 'alpha'],
|
|
['stable', 'stable'],
|
|
['beta', 'stable'],
|
|
[null, 'stable'],
|
|
]
|
|
|
|
for (const [persistedValue, expectedChannel] of channels) {
|
|
expect(normalizeReleaseChannel(persistedValue)).toBe(expectedChannel)
|
|
}
|
|
})
|
|
})
|