Files
sky_phone/frontend/src/utils/reload-cooldown.test.ts
T
Type 562dd8f321 ENH - polish weather refresh experience
Migrate the Weather app to the Sky UI primitives with richer condition effects, updated WebP icons, and pull-to-refresh feedback.\n\nAdd a shared reload cooldown for weather, banking, and housing actions, including localized status feedback and test-server coverage.
2026-08-14 17:09:03 +02:00

29 lines
1.0 KiB
TypeScript

import { describe, expect, it } from 'vitest'
import {
allowManualReload,
isReloadCooldownActive,
} from '@/utils/reload-cooldown'
describe('reload cooldown', () => {
it('blocks after too many reloads in a short window and recovers', () => {
const state = { cooldownUntil: 0, reloadAttempts: [] as number[] }
expect(allowManualReload(state, 1_000)).toBe(true)
expect(allowManualReload(state, 2_000)).toBe(true)
expect(allowManualReload(state, 3_000)).toBe(true)
expect(allowManualReload(state, 4_000)).toBe(false)
expect(isReloadCooldownActive(state, 13_999)).toBe(true)
expect(isReloadCooldownActive(state, 14_000)).toBe(false)
expect(allowManualReload(state, 14_000)).toBe(true)
})
it('forgets reloads outside the rolling window', () => {
const state = { cooldownUntil: 0, reloadAttempts: [] as number[] }
expect(allowManualReload(state, 1_000)).toBe(true)
expect(allowManualReload(state, 12_000)).toBe(true)
expect(state.reloadAttempts).toEqual([12_000])
})
})