/** * Tests for components/context-overflow-shared.js * * Pure HTML renderer for the truncation status badge shown in * context-overflow details. The single branch (count > 0 vs not) drives * which CSS variable the badge uses, so a regression here would change * the surfaced color and wording. */ import '@js/components/context-overflow-shared.js'; const { renderTruncationBadge } = window.contextOverflowShared; describe('renderTruncationBadge', () => { it('returns the "No truncation" badge when count is 0', () => { const html = renderTruncationBadge(0); expect(html).toContain('--success-color'); expect(html).toContain('No truncation'); expect(html).not.toContain('--error-color'); }); it('returns the "Yes" badge with the count when count > 0', () => { const html = renderTruncationBadge(5); expect(html).toContain('--error-color'); expect(html).toContain('Yes (5 requests)'); }); it('treats null as 0 (no truncation)', () => { expect(renderTruncationBadge(null)).toContain('No truncation'); }); it('treats undefined as 0 (no truncation)', () => { expect(renderTruncationBadge(undefined)).toContain('No truncation'); }); it('treats a non-numeric string as 0 (no truncation)', () => { // Number('foo') => NaN => falsy => || 0 expect(renderTruncationBadge('foo')).toContain('No truncation'); }); it('coerces a numeric string into a number for the count', () => { const html = renderTruncationBadge('42'); expect(html).toContain('--error-color'); expect(html).toContain('Yes (42 requests)'); }); it('treats negative numbers as no truncation (-3 is truthy but > 0 fails)', () => { // Number(-3) === -3 (truthy, so || 0 keeps -3), but the > 0 branch fails => returns success. expect(renderTruncationBadge(-3)).toContain('No truncation'); }); });