diff options
Diffstat (limited to 'src/state/persisted/__tests__/index.test.ts')
-rw-r--r-- | src/state/persisted/__tests__/index.test.ts | 49 |
1 files changed, 49 insertions, 0 deletions
diff --git a/src/state/persisted/__tests__/index.test.ts b/src/state/persisted/__tests__/index.test.ts new file mode 100644 index 000000000..90c5e0e4e --- /dev/null +++ b/src/state/persisted/__tests__/index.test.ts @@ -0,0 +1,49 @@ +import {jest, expect, test, afterEach} from '@jest/globals' +import AsyncStorage from '@react-native-async-storage/async-storage' + +import {defaults} from '#/state/persisted/schema' +import {migrate} from '#/state/persisted/legacy' +import * as store from '#/state/persisted/store' +import * as persisted from '#/state/persisted' + +const write = jest.mocked(store.write) +const read = jest.mocked(store.read) + +jest.mock('#/logger') +jest.mock('#/state/persisted/legacy', () => ({ + migrate: jest.fn(), +})) +jest.mock('#/state/persisted/store', () => ({ + write: jest.fn(), + read: jest.fn(), +})) + +afterEach(() => { + jest.useFakeTimers() + jest.clearAllMocks() + AsyncStorage.clear() +}) + +test('init: fresh install, no migration', async () => { + await persisted.init() + + expect(migrate).toHaveBeenCalledTimes(1) + expect(read).toHaveBeenCalledTimes(1) + expect(write).toHaveBeenCalledWith(defaults) + + // default value + expect(persisted.get('colorMode')).toBe('system') +}) + +test('init: fresh install, migration ran', async () => { + read.mockResolvedValueOnce(defaults) + + await persisted.init() + + expect(migrate).toHaveBeenCalledTimes(1) + expect(read).toHaveBeenCalledTimes(1) + expect(write).not.toHaveBeenCalled() + + // default value + expect(persisted.get('colorMode')).toBe('system') +}) |