Portal/rsconcept/frontend/src/models/FolderTree.test.ts

46 lines
1.3 KiB
TypeScript

import { FolderTree } from './FolderTree';
describe('Testing Tree construction', () => {
test('empty Tree should be empty', () => {
const tree = new FolderTree();
expect(tree.roots.size).toBe(0);
});
test('constructing from paths', () => {
const tree = new FolderTree(['/S', '/S/project1/123', '/U']);
expect(tree.roots.size).toBe(2);
expect(tree.roots.get('S')?.children.size).toBe(1);
});
});
describe('Testing Tree editing', () => {
test('add invalid path', () => {
const tree = new FolderTree();
expect(() => tree.addPath('invalid')).toThrow(Error);
});
test('add valid path', () => {
const tree = new FolderTree();
const node = tree.addPath('/S/test');
expect(node.getPath()).toBe('/S/test');
expect(node.filesInside).toBe(1);
expect(node.filesTotal).toBe(1);
expect(node.parent?.getPath()).toBe('/S');
expect(node.parent?.filesInside).toBe(0);
expect(node.parent?.filesTotal).toBe(1);
});
test('incrementing counter', () => {
const tree = new FolderTree();
const node1 = tree.addPath('/S/test', 0);
expect(node1.filesInside).toBe(0);
expect(node1.filesTotal).toBe(0);
const node2 = tree.addPath('/S/test', 2);
expect(node1).toBe(node2);
expect(node2.filesInside).toBe(2);
expect(node2.filesTotal).toBe(2);
});
});