augmenttoolkit / client /src /components /Journey /moodConfig.test.ts
Leon4gr45's picture
Upload folder using huggingface_hub
766d85d verified
Raw
History Blame Contribute Delete
2.49 kB
// FE-COMP-MOOD-001 to FE-COMP-MOOD-005
import { describe, it, expect } from 'vitest';
import { MOODS, WEATHERS, getMood, moodColor, tagColors, TAG_STYLES, MOOD_DEFAULT_COLOR } from './moodConfig';
describe('moodConfig', () => {
it('FE-COMP-MOOD-001: MOODS contains all five mood definitions', () => {
const ids = MOODS.map(m => m.id);
expect(ids).toEqual(['amazing', 'good', 'neutral', 'tired', 'rough']);
expect(MOODS).toHaveLength(5);
});
it('FE-COMP-MOOD-002: every mood has valid hex color and css var', () => {
for (const mood of MOODS) {
expect(mood.color).toMatch(/^#[0-9A-Fa-f]{6}$/);
expect(mood.cssVar).toMatch(/^var\(--mood-.+\)$/);
expect(mood.icon).toBeDefined();
expect(mood.label).toBeTruthy();
}
});
it('FE-COMP-MOOD-003: getMood returns correct mood or undefined', () => {
expect(getMood('amazing')?.id).toBe('amazing');
expect(getMood('rough')?.color).toBe('#9B8EC4');
expect(getMood('nonexistent')).toBeUndefined();
expect(getMood(null)).toBeUndefined();
expect(getMood(undefined)).toBeUndefined();
});
it('FE-COMP-MOOD-004: moodColor returns css var or fallback', () => {
expect(moodColor('good')).toBe('var(--mood-good)');
expect(moodColor(null)).toBe('var(--journal-faint)');
expect(moodColor('unknown')).toBe('var(--journal-faint)');
});
it('FE-COMP-MOOD-005: WEATHERS contains all eight entries with icons', () => {
expect(WEATHERS).toHaveLength(8);
const ids = WEATHERS.map(w => w.id);
expect(ids).toContain('sunny');
expect(ids).toContain('snowy');
expect(ids).toContain('stormy');
for (const w of WEATHERS) {
expect(w.icon).toBeDefined();
expect(w.label).toBeTruthy();
}
});
});
describe('tagColors', () => {
it('FE-COMP-MOOD-006: returns known tag colors for light and dark mode', () => {
const light = tagColors('hidden gem', false);
expect(light.bg).toBe('#dcfce7');
expect(light.fg).toBe('#166534');
const dark = tagColors('hidden gem', true);
expect(dark.bg).toBe('rgba(22,101,52,0.2)');
expect(dark.fg).toBe('#86efac');
});
it('FE-COMP-MOOD-007: returns fallback colors for unknown tags', () => {
const light = tagColors('random tag', false);
expect(light.bg).toBe('rgba(0,0,0,0.05)');
expect(light.fg).toBe('#374151');
const dark = tagColors('random tag', true);
expect(dark.bg).toBe('rgba(255,255,255,0.07)');
expect(dark.fg).toBe('#a1a1aa');
});
});