|
| 1 | +import { describe, it, expect } from 'vitest' |
| 2 | +import { normalizeThemeColor } from './theme-color' |
| 3 | + |
| 4 | +describe('normalizeThemeColor', () => { |
| 5 | + const FB = '#0a0a0a' |
| 6 | + |
| 7 | + it('expands 3-digit shorthand (the Lightning CSS minification case)', () => { |
| 8 | + expect(normalizeThemeColor('#fff', FB)).toBe('#ffffff') |
| 9 | + expect(normalizeThemeColor('#000', FB)).toBe('#000000') |
| 10 | + expect(normalizeThemeColor('#abc', FB)).toBe('#aabbcc') |
| 11 | + }) |
| 12 | + |
| 13 | + it('expands 4-digit shorthand with alpha', () => { |
| 14 | + expect(normalizeThemeColor('#fff8', FB)).toBe('#ffffff88') |
| 15 | + expect(normalizeThemeColor('#0000', FB)).toBe('#00000000') |
| 16 | + }) |
| 17 | + |
| 18 | + it('passes valid 6- and 8-digit hex through unchanged', () => { |
| 19 | + expect(normalizeThemeColor('#24292e', FB)).toBe('#24292e') |
| 20 | + expect(normalizeThemeColor('#3a424d55', FB)).toBe('#3a424d55') |
| 21 | + }) |
| 22 | + |
| 23 | + it('trims surrounding whitespace before matching', () => { |
| 24 | + expect(normalizeThemeColor(' #fff ', FB)).toBe('#ffffff') |
| 25 | + expect(normalizeThemeColor('\t#24292e\n', FB)).toBe('#24292e') |
| 26 | + }) |
| 27 | + |
| 28 | + it('falls back for empty / whitespace-only input', () => { |
| 29 | + expect(normalizeThemeColor('', FB)).toBe(FB) |
| 30 | + expect(normalizeThemeColor(' ', FB)).toBe(FB) |
| 31 | + }) |
| 32 | + |
| 33 | + it('falls back for malformed-length hex', () => { |
| 34 | + expect(normalizeThemeColor('#ff', FB)).toBe(FB) |
| 35 | + expect(normalizeThemeColor('#fffff', FB)).toBe(FB) |
| 36 | + expect(normalizeThemeColor('#fffffff', FB)).toBe(FB) |
| 37 | + }) |
| 38 | + |
| 39 | + it('falls back for non-hex color forms Monaco token colors reject', () => { |
| 40 | + expect(normalizeThemeColor('white', FB)).toBe(FB) |
| 41 | + expect(normalizeThemeColor('rgb(255, 255, 255)', FB)).toBe(FB) |
| 42 | + expect(normalizeThemeColor('oklch(1 0 0)', FB)).toBe(FB) |
| 43 | + expect(normalizeThemeColor('var(--x)', FB)).toBe(FB) |
| 44 | + }) |
| 45 | +}) |
0 commit comments