1
0
mirror of https://github.com/laurent22/joplin.git synced 2024-12-24 10:27:10 +02:00
joplin/packages/lib/services/trash/permanentlyDeleteOldItems.test.ts
2024-03-02 14:25:27 +00:00

79 lines
2.8 KiB
TypeScript

import { Day, msleep } from '@joplin/utils/time';
import Folder from '../../models/Folder';
import Note from '../../models/Note';
import { setupDatabaseAndSynchronizer, switchClient } from '../../testing/test-utils';
import permanentlyDeleteOldItems from './permanentlyDeleteOldItems';
import Setting from '../../models/Setting';
describe('permanentlyDeleteOldItems', () => {
beforeEach(async () => {
await setupDatabaseAndSynchronizer(1);
await switchClient(1);
});
it('should auto-delete old items', async () => {
const folder1 = await Folder.save({});
const folder2 = await Folder.save({});
const note1 = await Note.save({ parent_id: folder1.id });
const note2 = await Note.save({});
await Folder.delete(folder1.id, { toTrash: true, deleteChildren: true });
// First check that it doesn't auto-delete if it's not within the right interval
await permanentlyDeleteOldItems(Day);
expect((await Folder.load(folder1.id))).toBeTruthy();
expect((await Folder.load(folder2.id))).toBeTruthy();
expect((await Note.load(note1.id))).toBeTruthy();
expect((await Note.load(note2.id))).toBeTruthy();
await msleep(1);
await permanentlyDeleteOldItems(0);
expect((await Folder.load(folder1.id))).toBeFalsy();
expect((await Folder.load(folder2.id))).toBeTruthy();
expect((await Note.load(note1.id))).toBeFalsy();
expect((await Note.load(note2.id))).toBeTruthy();
});
it('should not auto-delete non-empty folders', async () => {
const folder1 = await Folder.save({});
const folder2 = await Folder.save({});
const note1 = await Note.save({ parent_id: folder1.id });
const note2 = await Note.save({});
await Folder.delete(folder1.id, { toTrash: true, deleteChildren: true });
// Simulates a folder having been deleted a long time ago - so it should be deleted. But
// since it contains a note it should not.
await Folder.save({ id: folder1.id, deleted_time: 1000 });
await permanentlyDeleteOldItems(Day);
expect((await Folder.load(folder1.id))).toBeTruthy();
expect((await Note.load(note1.id))).toBeTruthy();
// Now both folders and items are within the deletion interval, so they should be both be
// auto-deleted
await Note.save({ id: note1.id, deleted_time: 1000 });
await permanentlyDeleteOldItems(1);
expect((await Folder.load(folder1.id))).toBeFalsy();
expect((await Folder.load(folder2.id))).toBeTruthy();
expect((await Note.load(note1.id))).toBeFalsy();
expect((await Note.load(note2.id))).toBeTruthy();
});
it('should not do anything if auto-deletion is not enabled', async () => {
Setting.setValue('trash.autoDeletionEnabled', false);
const folder1 = await Folder.save({});
await Folder.delete(folder1.id, { toTrash: true });
await msleep(1);
await permanentlyDeleteOldItems(0);
expect(await Folder.count()).toBe(1);
});
});