about summary refs log tree commit diff
path: root/src/state/persisted/__tests__/migrate.test.ts
diff options
context:
space:
mode:
authordan <dan.abramov@gmail.com>2024-08-06 00:30:58 +0100
committerGitHub <noreply@github.com>2024-08-06 00:30:58 +0100
commit5bf7f3769d005e7e606e4b10327eb7467f59f0aa (patch)
tree1e1e2d1bb011b25a9153f39d8ba5f2281b0e1105 /src/state/persisted/__tests__/migrate.test.ts
parent74b0318d89b5ec4746cd4861f8573ea24c6ccea1 (diff)
downloadvoidsky-5bf7f3769d005e7e606e4b10327eb7467f59f0aa.tar.zst
[Persisted] Fork web and native, make it synchronous on the web (#4872)
* Delete logic for legacy storage

* Delete superfluous tests

At this point these tests aren't testing anything useful, let's just get rid of them.

* Inline store.ts methods into persisted/index.ts

* Fork persisted/index.ts into index.web.ts

* Remove non-essential code and comments from both forks

* Remove async/await from web fork of persisted/index.ts

* Remove unused return

* Enforce that forked types match
Diffstat (limited to 'src/state/persisted/__tests__/migrate.test.ts')
-rw-r--r--src/state/persisted/__tests__/migrate.test.ts93
1 files changed, 0 insertions, 93 deletions
diff --git a/src/state/persisted/__tests__/migrate.test.ts b/src/state/persisted/__tests__/migrate.test.ts
deleted file mode 100644
index 97767e273..000000000
--- a/src/state/persisted/__tests__/migrate.test.ts
+++ /dev/null
@@ -1,93 +0,0 @@
-import {jest, expect, test, afterEach} from '@jest/globals'
-import AsyncStorage from '@react-native-async-storage/async-storage'
-
-import {defaults, schema} from '#/state/persisted/schema'
-import {transform, migrate} from '#/state/persisted/legacy'
-import * as store from '#/state/persisted/store'
-import {logger} from '#/logger'
-import * as fixtures from '#/state/persisted/__tests__/fixtures'
-
-const write = jest.mocked(store.write)
-const read = jest.mocked(store.read)
-
-jest.mock('#/logger')
-jest.mock('#/state/persisted/store', () => ({
-  write: jest.fn(),
-  read: jest.fn(),
-}))
-
-afterEach(() => {
-  jest.clearAllMocks()
-  AsyncStorage.clear()
-})
-
-test('migrate: fresh install', async () => {
-  await migrate()
-
-  expect(AsyncStorage.getItem).toHaveBeenCalledWith('root')
-  expect(read).toHaveBeenCalledTimes(1)
-  expect(logger.debug).toHaveBeenCalledWith(
-    'persisted state: no migration needed',
-  )
-})
-
-test('migrate: fresh install, existing new storage', async () => {
-  read.mockResolvedValueOnce(defaults)
-
-  await migrate()
-
-  expect(AsyncStorage.getItem).toHaveBeenCalledWith('root')
-  expect(read).toHaveBeenCalledTimes(1)
-  expect(logger.debug).toHaveBeenCalledWith(
-    'persisted state: no migration needed',
-  )
-})
-
-test('migrate: fresh install, AsyncStorage error', async () => {
-  const prevGetItem = AsyncStorage.getItem
-
-  const error = new Error('test error')
-
-  AsyncStorage.getItem = jest.fn(() => {
-    throw error
-  })
-
-  await migrate()
-
-  expect(AsyncStorage.getItem).toHaveBeenCalledWith('root')
-  expect(logger.error).toHaveBeenCalledWith(error, {
-    message: 'persisted state: error migrating legacy storage',
-  })
-
-  AsyncStorage.getItem = prevGetItem
-})
-
-test('migrate: has legacy data', async () => {
-  await AsyncStorage.setItem('root', JSON.stringify(fixtures.LEGACY_DATA_DUMP))
-
-  await migrate()
-
-  expect(write).toHaveBeenCalledWith(transform(fixtures.LEGACY_DATA_DUMP))
-  expect(logger.debug).toHaveBeenCalledWith(
-    'persisted state: migrated legacy storage',
-  )
-})
-
-test('migrate: has legacy data, fails validation', async () => {
-  const legacy = fixtures.LEGACY_DATA_DUMP
-  // @ts-ignore
-  legacy.shell.colorMode = 'invalid'
-  await AsyncStorage.setItem('root', JSON.stringify(legacy))
-
-  await migrate()
-
-  const transformed = transform(legacy)
-  const validate = schema.safeParse(transformed)
-
-  expect(write).not.toHaveBeenCalled()
-  expect(logger.error).toHaveBeenCalledWith(
-    'persisted state: legacy data failed validation',
-    // @ts-ignore
-    {message: validate.error},
-  )
-})