mirror of
https://github.com/toeverything/AFFiNE.git
synced 2026-02-25 18:26:05 +08:00
fix(y-indexeddb): migration in firefox (#1904)
This commit is contained in:
@@ -7,6 +7,7 @@ import { __unstableSchemas, AffineSchemas } from '@blocksuite/blocks/models';
|
||||
import { assertExists, uuidv4, Workspace } from '@blocksuite/store';
|
||||
import { openDB } from 'idb';
|
||||
import { afterEach, beforeEach, describe, expect, test, vi } from 'vitest';
|
||||
import { IndexeddbPersistence } from 'y-indexeddb';
|
||||
import { applyUpdate, Doc, encodeStateAsUpdate } from 'yjs';
|
||||
|
||||
import type { WorkspacePersist } from '../index';
|
||||
@@ -45,6 +46,7 @@ beforeEach(() => {
|
||||
|
||||
afterEach(() => {
|
||||
indexedDB.deleteDatabase('affine-local');
|
||||
localStorage.clear();
|
||||
});
|
||||
|
||||
describe('indexeddb provider', () => {
|
||||
@@ -196,6 +198,38 @@ describe('indexeddb provider', () => {
|
||||
});
|
||||
}
|
||||
});
|
||||
|
||||
test('migration', async () => {
|
||||
{
|
||||
const yDoc = new Doc();
|
||||
yDoc.getMap().set('foo', 'bar');
|
||||
const persistence = new IndexeddbPersistence('test', yDoc);
|
||||
await persistence.whenSynced;
|
||||
persistence.destroy();
|
||||
}
|
||||
{
|
||||
const yDoc = new Doc();
|
||||
const provider = createIndexedDBProvider('test', yDoc);
|
||||
provider.connect();
|
||||
await provider.whenSynced;
|
||||
await new Promise(resolve => setTimeout(resolve, 0));
|
||||
expect(yDoc.getMap().get('foo')).toBe('bar');
|
||||
}
|
||||
localStorage.clear();
|
||||
{
|
||||
indexedDB.databases = vi.fn(async () => {
|
||||
throw new Error('not supported');
|
||||
});
|
||||
expect(indexedDB.databases).rejects.toThrow('not supported');
|
||||
const yDoc = new Doc();
|
||||
expect(indexedDB.databases).toBeCalledTimes(1);
|
||||
const provider = createIndexedDBProvider('test', yDoc);
|
||||
provider.connect();
|
||||
await provider.whenSynced;
|
||||
expect(indexedDB.databases).toBeCalledTimes(2);
|
||||
expect(yDoc.getMap().get('foo')).toBe('bar');
|
||||
}
|
||||
});
|
||||
});
|
||||
|
||||
describe('milestone', () => {
|
||||
|
||||
Reference in New Issue
Block a user