/** * Reading time estimation tests. */ import { describe, it, expect } from 'vitest'; import { estimateReadingTime } from './reading-time.js'; describe('estimateReadingTime', () => { it('returns 1 minute minimum for empty content', () => { const result = estimateReadingTime(''); expect(result.minutes).toBe(1); expect(result.words).toBe(0); }); it('returns 1 minute for short text', () => { const result = estimateReadingTime('Hello world'); expect(result.minutes).toBe(1); expect(result.words).toBe(2); }); it('strips HTML tags before counting', () => { const result = estimateReadingTime('

Hello world

'); expect(result.words).toBe(2); }); it('calculates correct minutes for long text (~238 wpm)', () => { const words = Array.from({ length: 476 }, (_, i) => `word${i}`).join(' '); const result = estimateReadingTime(words); expect(result.words).toBe(476); expect(result.minutes).toBe(2); }); it('rounds up reading time', () => { const words = Array.from({ length: 239 }, (_, i) => `word${i}`).join(' '); const result = estimateReadingTime(words); expect(result.words).toBe(239); expect(result.minutes).toBe(2); // 239/238 = 1.004 → ceil = 2 }); it('handles whitespace-heavy content correctly', () => { const result = estimateReadingTime(' one two three '); expect(result.words).toBe(3); }); });