feat(y-indexeddb): cleanup (#2207)

Co-authored-by: himself65 <himself65@outlook.com>
This commit is contained in:
三咲智子 Kevin Deng
2023-05-05 04:25:58 +08:00
committed by GitHub
parent 6d7f06c1c3
commit 52b9734a7b
4 changed files with 58 additions and 11 deletions
@@ -13,6 +13,7 @@ import { applyUpdate, Doc, encodeStateAsUpdate } from 'yjs';
import type { WorkspacePersist } from '../index';
import {
CleanupWhenConnectingError,
createIndexedDBProvider,
dbVersion,
DEFAULT_DB_NAME,
@@ -59,7 +60,7 @@ describe('indexeddb provider', () => {
await provider.whenSynced;
const db = await openDB(rootDBName, dbVersion);
{
const store = await db
const store = db
.transaction('workspace', 'readonly')
.objectStore('workspace');
const data = await store.get(id);
@@ -161,6 +162,43 @@ describe('indexeddb provider', () => {
expect(p1).not.toBe(p2);
});
test('cleanup', async () => {
const provider = createIndexedDBProvider(workspace.id, workspace.doc);
provider.connect();
await provider.whenSynced;
const db = await openDB(rootDBName, dbVersion);
{
const store = db
.transaction('workspace', 'readonly')
.objectStore('workspace');
const keys = await store.getAllKeys();
expect(keys).contain(workspace.id);
}
provider.disconnect();
await provider.cleanup();
{
const store = db
.transaction('workspace', 'readonly')
.objectStore('workspace');
const keys = await store.getAllKeys();
expect(keys).not.contain(workspace.id);
}
});
test('cleanup when connecting', async () => {
const provider = createIndexedDBProvider(workspace.id, workspace.doc);
provider.connect();
expect(() => provider.cleanup()).rejects.toThrowError(
CleanupWhenConnectingError
);
await provider.whenSynced;
provider.disconnect();
await provider.cleanup();
});
test('merge', async () => {
setMergeCount(5);
const provider = createIndexedDBProvider(