2024-03-02 16:25:27 +02:00
|
|
|
import { FolderEntity } from '../../services/database/types';
|
|
|
|
import { getTrashFolder, getTrashFolderId } from '../../services/trash';
|
2024-07-04 14:56:57 +02:00
|
|
|
import { buildFolderTree, renderFolders } from './side-menu-shared';
|
2024-03-02 16:25:27 +02:00
|
|
|
|
2024-04-25 16:31:18 +02:00
|
|
|
const renderItem = (folder: FolderEntity, hasChildren: boolean, depth: number) => {
|
|
|
|
return [folder.id, hasChildren, depth];
|
2024-03-02 16:25:27 +02:00
|
|
|
};
|
|
|
|
|
|
|
|
describe('side-menu-shared', () => {
|
|
|
|
|
|
|
|
test.each([
|
|
|
|
[
|
|
|
|
{
|
|
|
|
collapsedFolderIds: [],
|
|
|
|
folders: [],
|
|
|
|
notesParentType: 'Folder',
|
|
|
|
selectedFolderId: '',
|
|
|
|
selectedTagId: '',
|
|
|
|
},
|
|
|
|
{
|
|
|
|
items: [],
|
|
|
|
order: [],
|
|
|
|
},
|
|
|
|
],
|
|
|
|
|
|
|
|
[
|
|
|
|
{
|
|
|
|
collapsedFolderIds: [],
|
|
|
|
folders: [
|
|
|
|
{
|
|
|
|
id: '1',
|
|
|
|
parent_id: '',
|
|
|
|
deleted_time: 0,
|
|
|
|
},
|
|
|
|
{
|
|
|
|
id: '2',
|
|
|
|
parent_id: '',
|
|
|
|
deleted_time: 0,
|
|
|
|
},
|
|
|
|
{
|
|
|
|
id: '3',
|
|
|
|
parent_id: '1',
|
|
|
|
deleted_time: 0,
|
|
|
|
},
|
|
|
|
],
|
|
|
|
notesParentType: 'Folder',
|
|
|
|
selectedFolderId: '2',
|
|
|
|
selectedTagId: '',
|
|
|
|
},
|
|
|
|
{
|
|
|
|
items: [
|
2024-04-25 16:31:18 +02:00
|
|
|
['1', true, 0],
|
|
|
|
['3', false, 1],
|
|
|
|
['2', false, 0],
|
2024-03-02 16:25:27 +02:00
|
|
|
],
|
|
|
|
order: ['1', '3', '2'],
|
|
|
|
},
|
|
|
|
],
|
|
|
|
|
|
|
|
[
|
|
|
|
{
|
|
|
|
collapsedFolderIds: [],
|
|
|
|
folders: [
|
|
|
|
{
|
|
|
|
id: '1',
|
|
|
|
parent_id: '',
|
|
|
|
deleted_time: 0,
|
|
|
|
},
|
|
|
|
{
|
|
|
|
id: '2',
|
|
|
|
parent_id: '',
|
|
|
|
deleted_time: 1000,
|
|
|
|
},
|
|
|
|
getTrashFolder(),
|
|
|
|
],
|
|
|
|
notesParentType: 'Folder',
|
|
|
|
selectedFolderId: '',
|
|
|
|
selectedTagId: '',
|
|
|
|
},
|
|
|
|
{
|
|
|
|
items: [
|
2024-04-25 16:31:18 +02:00
|
|
|
['1', false, 0],
|
|
|
|
[getTrashFolderId(), true, 0],
|
|
|
|
['2', false, 1],
|
2024-03-02 16:25:27 +02:00
|
|
|
],
|
|
|
|
order: ['1', getTrashFolderId(), '2'],
|
|
|
|
},
|
|
|
|
],
|
2024-07-04 14:56:57 +02:00
|
|
|
|
|
|
|
// Should not render id: 4 because it's contained within the child of a collapsed folder.
|
|
|
|
[
|
|
|
|
{
|
|
|
|
collapsedFolderIds: ['2'],
|
|
|
|
folders: [
|
|
|
|
{
|
|
|
|
id: '1',
|
|
|
|
parent_id: '',
|
|
|
|
deleted_time: 0,
|
|
|
|
},
|
|
|
|
{
|
|
|
|
id: '2',
|
|
|
|
parent_id: '',
|
|
|
|
deleted_time: 0,
|
|
|
|
},
|
|
|
|
{
|
|
|
|
id: '3',
|
|
|
|
parent_id: '2',
|
|
|
|
deleted_time: 0,
|
|
|
|
},
|
|
|
|
{
|
|
|
|
id: '4',
|
|
|
|
parent_id: '3',
|
|
|
|
deleted_time: 0,
|
|
|
|
},
|
|
|
|
getTrashFolder(),
|
|
|
|
],
|
|
|
|
notesParentType: 'Folder',
|
|
|
|
selectedFolderId: '',
|
|
|
|
selectedTagId: '',
|
|
|
|
},
|
|
|
|
{
|
|
|
|
items: [
|
|
|
|
['1', false, 0],
|
|
|
|
['2', true, 0],
|
|
|
|
[getTrashFolderId(), false, 0],
|
|
|
|
],
|
|
|
|
order: ['1', '2', getTrashFolderId()],
|
|
|
|
},
|
|
|
|
],
|
|
|
|
])('should render folders (case %#)', (props, expected) => {
|
|
|
|
const actual = renderFolders({
|
|
|
|
folderTree: buildFolderTree(props.folders),
|
|
|
|
collapsedFolderIds: props.collapsedFolderIds,
|
|
|
|
}, renderItem);
|
2024-03-02 16:25:27 +02:00
|
|
|
expect(actual).toEqual(expected);
|
|
|
|
});
|
|
|
|
|
|
|
|
});
|