You've already forked joplin
mirror of
https://github.com/laurent22/joplin.git
synced 2025-07-16 00:14:34 +02:00
Desktop: Multiple window support (#11181)
Co-authored-by: Laurent Cozic <laurent22@users.noreply.github.com>
This commit is contained in:
@ -8,14 +8,13 @@ import { join } from 'path';
|
||||
import { formNoteToNote } from '.';
|
||||
|
||||
const defaultFormNoteProps: HookDependencies = {
|
||||
syncStarted: false,
|
||||
decryptionStarted: false,
|
||||
noteId: '',
|
||||
isProvisional: false,
|
||||
titleInputRef: null,
|
||||
editorRef: null,
|
||||
onBeforeLoad: ()=>{},
|
||||
onAfterLoad: ()=>{},
|
||||
onBeforeLoad: () => { },
|
||||
onAfterLoad: () => { },
|
||||
editorId: 'editor',
|
||||
};
|
||||
|
||||
describe('useFormNote', () => {
|
||||
@ -27,59 +26,58 @@ describe('useFormNote', () => {
|
||||
it('should update note when decryption completes', async () => {
|
||||
const testNote = await Note.save({ title: 'Test Note!' });
|
||||
|
||||
const makeFormNoteProps = (syncStarted: boolean, decryptionStarted: boolean): HookDependencies => {
|
||||
const makeFormNoteProps = (): HookDependencies => {
|
||||
return {
|
||||
...defaultFormNoteProps,
|
||||
syncStarted,
|
||||
decryptionStarted,
|
||||
noteId: testNote.id,
|
||||
};
|
||||
};
|
||||
|
||||
const formNote = renderHook(props => useFormNote(props), {
|
||||
initialProps: makeFormNoteProps(true, false),
|
||||
initialProps: makeFormNoteProps(),
|
||||
});
|
||||
await formNote.waitFor(() => {
|
||||
expect(formNote.result.current.formNote).toMatchObject({
|
||||
encryption_applied: 0,
|
||||
title: testNote.title,
|
||||
});
|
||||
// id is falsy until after the first load of the form note.
|
||||
expect(formNote.result.current.formNote.id).not.toBeFalsy();
|
||||
});
|
||||
expect(formNote.result.current.formNote).toMatchObject({
|
||||
encryption_applied: 0,
|
||||
title: testNote.title,
|
||||
});
|
||||
|
||||
await Note.save({
|
||||
id: testNote.id,
|
||||
encryption_cipher_text: 'cipher_text',
|
||||
encryption_applied: 1,
|
||||
});
|
||||
|
||||
// Sync starting should cause a re-render
|
||||
formNote.rerender(makeFormNoteProps(false, false));
|
||||
|
||||
await formNote.waitFor(() => {
|
||||
expect(formNote.result.current.formNote).toMatchObject({
|
||||
await act(async () => {
|
||||
await Note.save({
|
||||
id: testNote.id,
|
||||
encryption_cipher_text: 'cipher_text',
|
||||
encryption_applied: 1,
|
||||
});
|
||||
});
|
||||
|
||||
|
||||
formNote.rerender(makeFormNoteProps(false, true));
|
||||
|
||||
await Note.save({
|
||||
id: testNote.id,
|
||||
encryption_applied: 0,
|
||||
title: 'Test Note!',
|
||||
// Changing encryption_applied should cause a re-render
|
||||
await act(async () => {
|
||||
await formNote.waitFor(() => {
|
||||
expect(formNote.result.current.formNote).toMatchObject({
|
||||
encryption_applied: 1,
|
||||
});
|
||||
});
|
||||
});
|
||||
|
||||
// Ending decryption should also cause a re-render
|
||||
formNote.rerender(makeFormNoteProps(false, false));
|
||||
|
||||
await formNote.waitFor(() => {
|
||||
expect(formNote.result.current.formNote).toMatchObject({
|
||||
await act(async () => {
|
||||
await Note.save({
|
||||
id: testNote.id,
|
||||
encryption_applied: 0,
|
||||
title: 'Test Note!',
|
||||
});
|
||||
});
|
||||
|
||||
// Ending decryption should also cause a re-render
|
||||
await formNote.waitFor(() => {
|
||||
expect(formNote.result.current.formNote).toMatchObject({
|
||||
encryption_applied: 0,
|
||||
});
|
||||
// A larger-than-default timeout is needed to prevent CI failures:
|
||||
}, { timeout: 5_000 });
|
||||
|
||||
formNote.unmount();
|
||||
});
|
||||
|
||||
@ -116,37 +114,33 @@ describe('useFormNote', () => {
|
||||
formNote.unmount();
|
||||
});
|
||||
|
||||
// It seems this test is crashing the worker on CI (out of memory), so disabling it for now.
|
||||
it('should reload the note when it is changed outside of the editor', async () => {
|
||||
const note = await Note.save({ title: 'Test Note!', body: '...' });
|
||||
|
||||
// it('should reload the note when it is changed outside of the editor', async () => {
|
||||
// const note = await Note.save({ title: 'Test Note!' });
|
||||
const props = {
|
||||
...defaultFormNoteProps,
|
||||
noteId: note.id,
|
||||
};
|
||||
|
||||
// const makeFormNoteProps = (dbNote: DbNote): HookDependencies => {
|
||||
// return {
|
||||
// ...defaultFormNoteProps,
|
||||
// noteId: note.id,
|
||||
// dbNote,
|
||||
// };
|
||||
// };
|
||||
const formNote = renderHook(props => useFormNote(props), {
|
||||
initialProps: props,
|
||||
});
|
||||
|
||||
// const formNote = renderHook(props => useFormNote(props), {
|
||||
// initialProps: makeFormNoteProps({ id: note.id, updated_time: note.updated_time }),
|
||||
// });
|
||||
await formNote.waitFor(() => {
|
||||
expect(formNote.result.current.formNote.title).toBe('Test Note!');
|
||||
});
|
||||
|
||||
// await formNote.waitFor(() => {
|
||||
// expect(formNote.result.current.formNote.title).toBe('Test Note!');
|
||||
// });
|
||||
// Simulate the note being modified outside the editor
|
||||
await act(async () => {
|
||||
await Note.save({ id: note.id, title: 'Modified' });
|
||||
});
|
||||
|
||||
// // Simulate the note being modified outside the editor
|
||||
// const modifiedNote = await Note.save({ id: note.id, title: 'Modified' });
|
||||
await formNote.waitFor(() => {
|
||||
expect(formNote.result.current.formNote.title).toBe('Modified');
|
||||
});
|
||||
|
||||
// // NoteEditor then would update `dbNote`
|
||||
// formNote.rerender(makeFormNoteProps({ id: note.id, updated_time: modifiedNote.updated_time }));
|
||||
|
||||
// await formNote.waitFor(() => {
|
||||
// expect(formNote.result.current.formNote.title).toBe('Modified');
|
||||
// });
|
||||
// });
|
||||
formNote.unmount();
|
||||
});
|
||||
|
||||
test('should refresh resource infos when changed outside the editor', async () => {
|
||||
let note = await Note.save({});
|
||||
@ -154,17 +148,15 @@ describe('useFormNote', () => {
|
||||
const resourceIds = Note.linkedItemIds(note.body);
|
||||
const resource = await Resource.load(resourceIds[0]);
|
||||
|
||||
const makeFormNoteProps = (syncStarted: boolean, decryptionStarted: boolean): HookDependencies => {
|
||||
const makeFormNoteProps = (): HookDependencies => {
|
||||
return {
|
||||
...defaultFormNoteProps,
|
||||
syncStarted,
|
||||
decryptionStarted,
|
||||
noteId: note.id,
|
||||
};
|
||||
};
|
||||
|
||||
const formNote = renderHook(props => useFormNote(props), {
|
||||
initialProps: makeFormNoteProps(true, false),
|
||||
initialProps: makeFormNoteProps(),
|
||||
});
|
||||
|
||||
await formNote.waitFor(() => {
|
||||
|
Reference in New Issue
Block a user