25 lines
1.3 KiB
JavaScript
25 lines
1.3 KiB
JavaScript
import { expect, test } from 'bun:test';
|
|
import { IDBKeyRange, indexedDB } from 'fake-indexeddb';
|
|
globalThis.indexedDB = indexedDB; globalThis.IDBKeyRange = IDBKeyRange;
|
|
const { localDb } = await import('./local-db');
|
|
const { api } = await import('./api');
|
|
const { createWebRepository } = await import('./repository');
|
|
const { createLocalMemo, replaceLocalMemoId } = await import('./local-mirror');
|
|
test('a plugin can reopen its saved temporary note ID after synchronization', async () => {
|
|
const scope = `plugin-note-${crypto.randomUUID()}`;
|
|
const savedGetMemo = api.getMemo;
|
|
try {
|
|
const local = await createLocalMemo(scope, { notebookId: 'nb_test', title: 'Research', contentMarkdown: '# Research' });
|
|
const remote = { ...local, id: 'memo_synced_research' };
|
|
await replaceLocalMemoId(scope, local.id, remote);
|
|
const requested = [];
|
|
api.getMemo = async id => { requested.push(id); if (id !== remote.id) throw new Error('Memo not found'); return { memo: remote }; };
|
|
const reopened = await createWebRepository(scope).getMemo(local.id);
|
|
expect(reopened.memo.id).toBe(remote.id); expect(requested).toEqual([remote.id]);
|
|
} finally {
|
|
api.getMemo = savedGetMemo;
|
|
await localDb.memos.where('scope').equals(scope).delete();
|
|
await localDb.idMappings.where('scope').equals(scope).delete();
|
|
}
|
|
});
|