1
0
mirror of https://github.com/laurent22/joplin.git synced 2024-12-30 10:36:35 +02:00
joplin/packages/lib/models/utils/onFolderDrop.test.ts

95 lines
3.1 KiB
TypeScript

import { getTrashFolderId } from '../../services/trash';
import { setupDatabaseAndSynchronizer, switchClient } from '../../testing/test-utils';
import Folder from '../Folder';
import Note from '../Note';
import onFolderDrop from './onFolderDrop';
describe('onFolderDrop', () => {
beforeEach(async () => {
await setupDatabaseAndSynchronizer(1);
await switchClient(1);
});
it('should drop a note to the trash', async () => {
const note = await Note.save({});
const beforeTime = Date.now();
await onFolderDrop([note.id], [], getTrashFolderId());
const n = await Note.load(note.id);
expect(n.deleted_time).toBeGreaterThanOrEqual(beforeTime);
});
it('should drop a note in the trash to the root of the trash', async () => {
const folder = await Folder.save({});
const note = await Note.save({ parent_id: folder.id });
const beforeTime = Date.now();
await Folder.delete(folder.id, { toTrash: true });
await onFolderDrop([note.id], [], getTrashFolderId());
const n = await Note.load(note.id);
expect(n.deleted_time).toBeGreaterThan(beforeTime);
expect(n.parent_id).toBe('');
});
it('should drop a folder in the trash to the root of the trash', async () => {
const folder1 = await Folder.save({});
const folder2 = await Folder.save({ parent_id: folder1.id });
await Folder.delete(folder1.id, { toTrash: true });
await onFolderDrop([], [folder2.id], getTrashFolderId());
const f = await Folder.load(folder2.id);
expect(f.deleted_time).toBeTruthy();
expect(f.parent_id).toBe('');
});
it('should drop a deleted folder to a non-deleted one', async () => {
const folder1 = await Folder.save({});
const folder2 = await Folder.save({});
await Folder.delete(folder2.id, { toTrash: true });
await onFolderDrop([], [folder2.id], folder1.id);
const f2 = await Folder.load(folder2.id);
expect(f2.deleted_time).toBe(0);
expect(f2.parent_id).toBe(folder1.id);
});
it('should drop a deleted note to a non-deleted folder', async () => {
const folder1 = await Folder.save({});
const folder2 = await Folder.save({});
const note1 = await Note.save({ parent_id: folder1.id });
await Note.delete(note1.id, { toTrash: true });
await onFolderDrop([note1.id], [], folder2.id);
const n1 = await Note.load(note1.id);
expect(n1.deleted_time).toBe(0);
expect(n1.parent_id).toBe(folder2.id);
});
it('should drop a non-deleted folder to the virtual root notebook', async () => {
const folder1 = await Folder.save({});
const folder2 = await Folder.save({ parent_id: folder1.id });
await onFolderDrop([], [folder2.id], '');
const folder2Reloaded = await Folder.load(folder2.id);
expect(folder2Reloaded.parent_id).toBe(folder1.parent_id);
expect(folder2Reloaded.parent_id).toBe('');
});
it('should drop a deleted folder to the virtual root notebook', async () => {
const folder1 = await Folder.save({});
await Folder.delete(folder1.id, { toTrash: true });
await onFolderDrop([], [folder1.id], '');
const folder1Reloaded = await Folder.load(folder1.id);
expect(folder1Reloaded.parent_id).toBe('');
expect(folder1Reloaded.deleted_time).toBe(0);
});
});