|
| 1 | +import { vi, describe, expect, it, beforeEach } from 'vitest'; |
| 2 | + |
| 3 | +vi.mock('../utils/cache/local_storage_cache.browser', () => { |
| 4 | + return { |
| 5 | + LocalStorageCache: vi.fn(), |
| 6 | + }; |
| 7 | +}); |
| 8 | + |
| 9 | +vi.mock('./vuid_manager', () => { |
| 10 | + return { |
| 11 | + DefaultVuidManager: vi.fn(), |
| 12 | + VuidCacheManager: vi.fn(), |
| 13 | + }; |
| 14 | +}); |
| 15 | + |
| 16 | +import { createVuidManager } from './vuid_manager_factory.browser'; |
| 17 | +import { LocalStorageCache } from '../utils/cache/local_storage_cache.browser'; |
| 18 | +import { DefaultVuidManager, VuidCacheManager } from './vuid_manager'; |
| 19 | + |
| 20 | +describe('createVuidManager', () => { |
| 21 | + const MockVuidCacheManager = vi.mocked(VuidCacheManager); |
| 22 | + const MockLocalStorageCache = vi.mocked(LocalStorageCache); |
| 23 | + const MockDefaultVuidManager = vi.mocked(DefaultVuidManager); |
| 24 | + |
| 25 | + beforeEach(() => { |
| 26 | + MockDefaultVuidManager.mockClear(); |
| 27 | + }); |
| 28 | + |
| 29 | + it('should pass the enableVuid option to the DefaultVuidManager', () => { |
| 30 | + const manager = createVuidManager({ enableVuid: true }); |
| 31 | + expect(manager).toBe(MockDefaultVuidManager.mock.instances[0]); |
| 32 | + expect(MockDefaultVuidManager.mock.calls[0][0].enableVuid).toBe(true); |
| 33 | + |
| 34 | + const manager2 = createVuidManager({ enableVuid: false }); |
| 35 | + expect(manager2).toBe(MockDefaultVuidManager.mock.instances[1]); |
| 36 | + expect(MockDefaultVuidManager.mock.calls[1][0].enableVuid).toBe(false); |
| 37 | + }); |
| 38 | + |
| 39 | + it('should use a VuidCacheManager with a LocalStorageCache', () => { |
| 40 | + const manager = createVuidManager({ enableVuid: true }); |
| 41 | + expect(manager).toBe(MockDefaultVuidManager.mock.instances[0]); |
| 42 | + |
| 43 | + |
| 44 | + const usedCacheManager = MockDefaultVuidManager.mock.calls[0][0].vuidCacheManager; |
| 45 | + expect(usedCacheManager).toBe(MockVuidCacheManager.mock.instances[0]); |
| 46 | + |
| 47 | + const usedCache = MockVuidCacheManager.mock.calls[0][0]; |
| 48 | + expect(usedCache).toBe(MockLocalStorageCache.mock.instances[0]); |
| 49 | + }); |
| 50 | + |
| 51 | + it('should use a single VuidCacheManager instance for all VuidManager instances', () => { |
| 52 | + const manager1 = createVuidManager({ enableVuid: true }); |
| 53 | + const manager2 = createVuidManager({ enableVuid: true }); |
| 54 | + expect(manager1).toBe(MockDefaultVuidManager.mock.instances[0]); |
| 55 | + expect(manager2).toBe(MockDefaultVuidManager.mock.instances[1]); |
| 56 | + expect(MockVuidCacheManager.mock.instances.length).toBe(1); |
| 57 | + |
| 58 | + const usedCacheManager1 = MockDefaultVuidManager.mock.calls[0][0].vuidCacheManager; |
| 59 | + const usedCacheManager2 = MockDefaultVuidManager.mock.calls[1][0].vuidCacheManager; |
| 60 | + expect(usedCacheManager1).toBe(usedCacheManager2); |
| 61 | + expect(usedCacheManager1).toBe(MockVuidCacheManager.mock.instances[0]); |
| 62 | + }); |
| 63 | +}); |
0 commit comments