// @vitest-environment nuxt import { describe, it, expect, beforeEach } from 'vitest'; import { useUnits } from '../use-units'; describe('useUnits', () => { beforeEach(() => { localStorage.clear(); useNuxtApp().payload.state = {}; }); it('по умолчанию metric', () => { const { units } = useUnits(); expect(units.value).toBe('metric'); }); it('imperial для US', () => { useState('clientCountryCode', () => 'us'); const { units } = useUnits(); expect(units.value).toBe('imperial'); }); it('imperial для Liberia', () => { useState('clientCountryCode', () => 'lr'); const { units } = useUnits(); expect(units.value).toBe('imperial'); }); it('берёт сохранённое значение из localStorage', () => { localStorage.setItem('units', 'imperial'); const { units } = useUnits(); expect(units.value).toBe('imperial'); }); it('localStorage приоритетнее country code', () => { useState('clientCountryCode', () => 'us'); localStorage.setItem('units', 'metric'); const { units } = useUnits(); expect(units.value).toBe('metric'); }); it('hiddenByUnits для metric — скрывает дюймы и фунты', () => { const { hiddenByUnits } = useUnits(); expect(hiddenByUnits.value).toEqual(new Set(['height_in', 'weight_lb'])); }); it('hiddenByUnits для imperial — скрывает см и кг', () => { localStorage.setItem('units', 'imperial'); const { hiddenByUnits } = useUnits(); expect(hiddenByUnits.value).toEqual(new Set(['height_cm', 'weight_kg'])); }); });