storage.spec.ts 1.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859
  1. import { beforeEach, describe, expect, it, vi } from 'vitest';
  2. import {
  3. getRememberedAccounts,
  4. rememberLoginAccount,
  5. removeRememberedAccount,
  6. } from '@/utils/storage';
  7. let storage: Map<string, unknown>;
  8. beforeEach(() => {
  9. storage = new Map<string, unknown>();
  10. vi.stubGlobal('uni', {
  11. getStorageSync: (key: string) => storage.get(key) ?? '',
  12. setStorageSync: (key: string, value: unknown) => storage.set(key, value),
  13. removeStorageSync: (key: string) => storage.delete(key),
  14. });
  15. });
  16. describe('remembered login accounts', () => {
  17. it('migrates the legacy single-account value', () => {
  18. storage.set('aidop_login_account', 'UATAdminA');
  19. expect(getRememberedAccounts()).toEqual(['UATAdminA']);
  20. expect(JSON.parse(String(storage.get('aidop_login_accounts')))).toEqual(['UATAdminA']);
  21. });
  22. it('keeps the most recently used account first and removes duplicates case-insensitively', () => {
  23. rememberLoginAccount('UATAdminA');
  24. rememberLoginAccount('AIDOPDemoTenant');
  25. rememberLoginAccount('uatadmina');
  26. expect(getRememberedAccounts()).toEqual(['uatadmina', 'AIDOPDemoTenant']);
  27. });
  28. it('limits history to eight accounts', () => {
  29. for (let index = 1; index <= 10; index += 1) {
  30. rememberLoginAccount(`user${index}`);
  31. }
  32. expect(getRememberedAccounts()).toEqual([
  33. 'user10',
  34. 'user9',
  35. 'user8',
  36. 'user7',
  37. 'user6',
  38. 'user5',
  39. 'user4',
  40. 'user3',
  41. ]);
  42. });
  43. it('removes one account without clearing the remaining history', () => {
  44. rememberLoginAccount('first');
  45. rememberLoginAccount('second');
  46. expect(removeRememberedAccount('SECOND')).toEqual(['first']);
  47. expect(storage.get('aidop_login_account')).toBe('first');
  48. });
  49. });