import { describe, it, expect } from 'vitest'; import { resolveIcon, relativeTime, autoDefaultIcon } from '../../public/views/icon_util.js'; describe('autoDefaultIcon', () => { it('maps groups to bundled icons', () => { expect(autoDefaultIcon('Network')).toBe('set:devices:router'); expect(autoDefaultIcon('Entertainment')).toBe('set:devices:tv'); expect(autoDefaultIcon('Smart Home')).toBe('set:devices:plug'); expect(autoDefaultIcon('Personal')).toBe('set:devices:phone'); expect(autoDefaultIcon('whatever')).toBe('set:devices:unknown'); }); }); describe('resolveIcon', () => { it('resolves set + brand refs', () => { expect(resolveIcon('set:devices:router')).toBe('/api/icon-sets/devices/router.svg'); expect(resolveIcon('set:mine:nas')).toBe('/api/icon-sets/mine/nas.svg'); expect(resolveIcon('brand:apple')).toBe('/api/icons/apple.png'); }); it('returns null for junk', () => { expect(resolveIcon('nope')).toBeNull(); }); }); describe('relativeTime', () => { const base = Date.parse('2026-06-09T12:00:00Z'); it('formats buckets', () => { expect(relativeTime('2026-06-09T11:59:30Z', base)).toBe('just now'); expect(relativeTime('2026-06-09T11:40:00Z', base)).toBe('20m ago'); expect(relativeTime('2026-06-09T09:00:00Z', base)).toBe('3h ago'); expect(relativeTime('2026-06-06T12:00:00Z', base)).toBe('3d ago'); }); });