import { beforeEach, describe, expect, it, vi } from 'vitest'; import { getRememberedAccounts, rememberLoginAccount, removeRememberedAccount, } from '@/utils/storage'; let storage: Map; beforeEach(() => { storage = new Map(); vi.stubGlobal('uni', { getStorageSync: (key: string) => storage.get(key) ?? '', setStorageSync: (key: string, value: unknown) => storage.set(key, value), removeStorageSync: (key: string) => storage.delete(key), }); }); describe('remembered login accounts', () => { it('migrates the legacy single-account value', () => { storage.set('aidop_login_account', 'UATAdminA'); expect(getRememberedAccounts()).toEqual(['UATAdminA']); expect(JSON.parse(String(storage.get('aidop_login_accounts')))).toEqual(['UATAdminA']); }); it('keeps the most recently used account first and removes duplicates case-insensitively', () => { rememberLoginAccount('UATAdminA'); rememberLoginAccount('AIDOPDemoTenant'); rememberLoginAccount('uatadmina'); expect(getRememberedAccounts()).toEqual(['uatadmina', 'AIDOPDemoTenant']); }); it('limits history to eight accounts', () => { for (let index = 1; index <= 10; index += 1) { rememberLoginAccount(`user${index}`); } expect(getRememberedAccounts()).toEqual([ 'user10', 'user9', 'user8', 'user7', 'user6', 'user5', 'user4', 'user3', ]); }); it('removes one account without clearing the remaining history', () => { rememberLoginAccount('first'); rememberLoginAccount('second'); expect(removeRememberedAccount('SECOND')).toEqual(['first']); expect(storage.get('aidop_login_account')).toBe('first'); }); });