You've already forked joplin
mirror of
https://github.com/laurent22/joplin.git
synced 2025-07-13 00:10:37 +02:00
Desktop: Re-render note when resources are changed (#10459)
This commit is contained in:
@ -1,7 +1,9 @@
|
||||
import Note from '@joplin/lib/models/Note';
|
||||
import { setupDatabaseAndSynchronizer, switchClient } from '@joplin/lib/testing/test-utils';
|
||||
import { renderHook } from '@testing-library/react-hooks';
|
||||
import { act, renderHook } from '@testing-library/react-hooks';
|
||||
import useFormNote, { HookDependencies } from './useFormNote';
|
||||
import shim from '@joplin/lib/shim';
|
||||
import Resource from '@joplin/lib/models/Resource';
|
||||
|
||||
const defaultFormNoteProps: HookDependencies = {
|
||||
syncStarted: false,
|
||||
@ -75,6 +77,8 @@ describe('useFormNote', () => {
|
||||
title: 'Test Note!',
|
||||
});
|
||||
});
|
||||
|
||||
formNote.unmount();
|
||||
});
|
||||
|
||||
// It seems this test is crashing the worker on CI (out of memory), so disabling it for now.
|
||||
@ -109,4 +113,43 @@ describe('useFormNote', () => {
|
||||
// });
|
||||
// });
|
||||
|
||||
test('should refresh resource infos when changed outside the editor', async () => {
|
||||
let note = await Note.save({});
|
||||
note = await shim.attachFileToNote(note, __filename);
|
||||
const resourceIds = Note.linkedItemIds(note.body);
|
||||
const resource = await Resource.load(resourceIds[0]);
|
||||
|
||||
const makeFormNoteProps = (syncStarted: boolean, decryptionStarted: boolean): HookDependencies => {
|
||||
return {
|
||||
...defaultFormNoteProps,
|
||||
syncStarted,
|
||||
decryptionStarted,
|
||||
noteId: note.id,
|
||||
};
|
||||
};
|
||||
|
||||
const formNote = renderHook(props => useFormNote(props), {
|
||||
initialProps: makeFormNoteProps(true, false),
|
||||
});
|
||||
|
||||
await formNote.waitFor(() => {
|
||||
return Object.values(formNote.result.current.resourceInfos).length > 0;
|
||||
});
|
||||
const initialResourceInfos = formNote.result.current.resourceInfos;
|
||||
expect(initialResourceInfos).toMatchObject({
|
||||
[resource.id]: { item: { id: resource.id } },
|
||||
});
|
||||
|
||||
await act(async () => {
|
||||
await Resource.save({ ...resource, filename: 'test.ts' });
|
||||
});
|
||||
await formNote.waitFor(() => {
|
||||
const resourceInfo = formNote.result.current.resourceInfos[resource.id];
|
||||
expect(resourceInfo.item).toMatchObject({
|
||||
id: resource.id, filename: 'test.ts',
|
||||
});
|
||||
});
|
||||
|
||||
formNote.unmount();
|
||||
});
|
||||
});
|
||||
|
Reference in New Issue
Block a user