diff --git a/packages/file-graph/fileGraph.js b/packages/file-graph/fileGraph.js index 7860a00..611fc4c 100644 --- a/packages/file-graph/fileGraph.js +++ b/packages/file-graph/fileGraph.js @@ -30,9 +30,13 @@ export default class FileGraph { // Overwrite the file graph with the provided files // Remove file nodes that don't exist anymore and add new ones - eventFiles.forEach((file) => { - this.root.merge(file) + const newNode = new FileNode(eventFiles[0]) + + eventFiles.slice(1).forEach((file) => { + newNode.addChild(file, { makeParents: true }) }) + + this.root.merge(newNode) } handleEvent(event) { diff --git a/packages/file-graph/fileGraph.test.js b/packages/file-graph/fileGraph.test.js index 97ab912..7f6447a 100644 --- a/packages/file-graph/fileGraph.test.js +++ b/packages/file-graph/fileGraph.test.js @@ -40,13 +40,23 @@ describe('FileGraph', () => { const filesToAdd = [ { - path: '/home/user/file1.txt', + path: '/home/user/folder1', + type: 'folder', + discovered: true, + }, + { + path: '/home/user/folder2', + type: 'folder', + discovered: true, + }, + { + path: '/home/user/folder1/file1.txt', type: 'file', discovered: true, }, { - path: '/home/user/folder1', - type: 'folder', + path: '/home/user/folder2/file2.txt', + type: 'file', discovered: true, }, ] @@ -55,7 +65,11 @@ describe('FileGraph', () => { const filesToRemove = [ { - path: '/home/user/folder1', + path: '/home/user/folder1/file1.txt', + type: 'folder', + }, + { + path: '/home/user/folder2', type: 'folder', }, ] @@ -64,6 +78,12 @@ describe('FileGraph', () => { console.log(fileGraph.root.toString()) expect(fileGraph.root.children[0].children[0].children.length).toBe(1) + expect(fileGraph.root.children[0].children[0].children[0].name).toBe( + 'folder1' + ) + expect( + fileGraph.root.children[0].children[0].children[0].children.length + ).toBe(0) }) test('discover new files', () => { @@ -71,28 +91,48 @@ describe('FileGraph', () => { const filesToAdd = [ { - path: '/home/user/file1.txt', + path: '/home/user/folder1', + type: 'folder', + discovered: true, + }, + { + path: '/home/user/folder2', + type: 'folder', + discovered: true, + }, + { + path: '/home/user/folder1/file1.txt', type: 'file', discovered: true, }, { - path: '/home/user/folder1', - type: 'folder', + path: '/home/user/folder2/file2.txt', + type: 'file', discovered: true, }, ] fileGraph.add(filesToAdd) - expect(fileGraph.root.children[0].children[0].children.length).toBe(2) + console.log(fileGraph.root.toString()) const newFiles = [ { - path: '/home/newfile.txt', + path: '/home/user/folder1', + type: 'folder', + discovered: true, + }, + { + path: '/home/user/folder1/file1.txt', type: 'file', discovered: true, }, { - path: '/home/user/file1.txt', + path: '/home/user/folder1/file2.txt', + type: 'file', + discovered: true, + }, + { + path: '/home/user/folder1/file3.txt', type: 'file', discovered: true, }, @@ -101,10 +141,9 @@ describe('FileGraph', () => { fileGraph.discover(newFiles) console.log(fileGraph.root.toString()) - expect(fileGraph.root.children[0].children.length).toBe(2) - expect(fileGraph.root.children[0].children[0].name).toBe('newfile.txt') - expect(fileGraph.root.children[0].children[0].children[0].name).toBe( - 'file1.txt' - ) + expect(fileGraph.root.children[0].children[0].children.length).toBe(2) + expect( + fileGraph.root.children[0].children[0].children[0].children.length + ).toBe(3) }) })