import { describe, it, expect, vi, beforeEach } from 'vitest' vi.mock('@/api/auth', () => { return { currentUser: vi.fn(async () => ({ id: 42, email: 'grace@example.com', displayName: 'Grace Hopper' })), loginWithPassword: vi.fn(async (email: string) => ({ id: 8, email, displayName: email })), logout: vi.fn(async () => {}), createAccount: vi.fn(async () => { throw new Error('createAccount not implemented yet') }), handleGoogleLogin: vi.fn(async () => { throw new Error('handleGoogleLogin not implemented yet') }), } }) import { useAuth, loadUser } from '@/composables/useAuth' describe('useAuth (multitenant state)', () => { beforeEach(() => { // Reset modules and state between tests vi.resetModules() }) it('exposes households and activeHousehold state with setters', async () => { const { user, households, activeHousehold, setHouseholds, setActiveHousehold } = useAuth() expect(user.value).toBeNull() expect(households.value).toEqual([]) expect(activeHousehold.value).toBeNull() const hs = [ { id: 1, name: 'Smiths', slug: 'the-smiths' }, { id: 2, name: 'Johnsons', slug: 'the-johnsons' }, ] setHouseholds(hs) expect(households.value.length).toBe(2) setActiveHousehold(hs[1]) expect(activeHousehold.value?.slug).toBe('the-johnsons') setActiveHousehold('the-smiths') expect(activeHousehold.value?.slug).toBe('the-smiths') }) it('supports loading current user, loginWithPassword, and logout clearing user', async () => { const { user, loginWithPassword, logout } = useAuth() // load current user await loadUser() expect(user.value?.displayName).toBe('Grace Hopper') // login with email/password await loginWithPassword('user@example.com', 'pw') expect(user.value?.displayName).toBe('user@example.com') // logout clears user await logout() expect(user.value).toBeNull() }) })