opsdash-app/opsdash/test/reporting.test.ts
blade34242 32c5b95894
All checks were successful
Nextcloud Server Tests / version-consistency (push) Successful in 32s
Nextcloud Server Tests / matrix-config (push) Successful in 27s
Nextcloud Server Tests / Nextcloud stable30 / PHP 8.2 (stable30, 8.2) (push) Successful in 15m47s
Nextcloud Server Tests / Nextcloud stable31 / PHP 8.2 (stable31, 8.2) (push) Successful in 16m10s
Nextcloud Server Tests / Nextcloud stable31 / PHP 8.3 (stable31, 8.3) (push) Successful in 15m58s
Nextcloud Server Tests / Nextcloud stable32 / PHP 8.2 (stable32, 8.2) (push) Successful in 15m55s
Nextcloud Server Tests / Nextcloud stable32 / PHP 8.3 (stable32, 8.3) (push) Successful in 16m23s
Nextcloud Server Tests / Nextcloud stable33 / PHP 8.2 (stable33, 8.2) (push) Successful in 17m14s
Nextcloud Server Tests / Nextcloud stable33 / PHP 8.3 (stable33, 8.3) (push) Successful in 16m23s
Refine recap delivery scheduling
2026-05-15 14:01:57 +07:00

73 lines
2.4 KiB
TypeScript

import { describe, it, expect } from 'vitest'
import { createDefaultDeckSettings, createDefaultReportingConfig, normalizeDeckSettings, normalizeReportingConfig } from '../src/services/reporting'
describe('Deck feature settings', () => {
it('provides sane defaults', () => {
const defaults = createDefaultDeckSettings()
expect(defaults.enabled).toBe(true)
expect(defaults.filtersEnabled).toBe(true)
expect(defaults.defaultFilter).toBe('all')
expect(defaults.hiddenBoards).toEqual([])
expect(defaults.mineMode).toBe('assignee')
expect(defaults.solvedIncludesArchived).toBe(true)
expect(defaults.ticker).toMatchObject({ autoScroll: true, intervalSeconds: 5, showBoardBadges: true })
})
it('normalizes hidden boards and default filter', () => {
const normalized = normalizeDeckSettings({
enabled: false,
filtersEnabled: false,
defaultFilter: 'done_mine',
hiddenBoards: [3, '5', 'foo', -4, 0, 3],
mineMode: 'creator',
solvedIncludesArchived: false,
ticker: { autoScroll: false, intervalSeconds: 12, showBoardBadges: false },
})
expect(normalized.enabled).toBe(false)
expect(normalized.filtersEnabled).toBe(false)
expect(normalized.defaultFilter).toBe('done_mine')
expect(normalized.hiddenBoards).toEqual([3, 5])
expect(normalized.mineMode).toBe('creator')
expect(normalized.solvedIncludesArchived).toBe(false)
expect(normalized.ticker).toEqual({ autoScroll: false, intervalSeconds: 10, showBoardBadges: false })
})
})
describe('Reporting config', () => {
it('provides recap-focused defaults', () => {
const defaults = createDefaultReportingConfig()
expect(defaults.enabled).toBe(false)
expect(defaults.modes.week).toEqual({
enabled: true,
delivery: 'final',
sendTimeLocal: '06:00',
})
expect(defaults.modes.month).toEqual({
enabled: false,
delivery: 'checkpoint_final',
sendTimeLocal: '18:00',
})
})
it('normalizes legacy cadence into delivery modes', () => {
const normalized = normalizeReportingConfig({
enabled: true,
schedule: 'week',
interim: 'midweek',
})
expect(normalized.enabled).toBe(true)
expect(normalized.modes.week).toEqual({
enabled: true,
delivery: 'checkpoint_final',
sendTimeLocal: '06:00',
})
expect(normalized.modes.month).toEqual({
enabled: false,
delivery: 'checkpoint_final',
sendTimeLocal: '18:00',
})
})
})