diff --git a/services/web/app/src/Features/Project/ProjectLocator.js b/services/web/app/src/Features/Project/ProjectLocator.js index 2feaa0cebf..32d7d2bc00 100644 --- a/services/web/app/src/Features/Project/ProjectLocator.js +++ b/services/web/app/src/Features/Project/ProjectLocator.js @@ -95,7 +95,10 @@ function findElement(options, _callback) { const path = { fileSystem: '', mongo: 'rootFolder.0' } const startSearch = project => { - if (elementId + '' === project.rootFolder[0]._id + '') { + if ( + elementId + '' === project.rootFolder[0]._id + '' && + elementType === 'folders' + ) { callback(null, project.rootFolder[0], path, null) } else { search(project.rootFolder[0], path) diff --git a/services/web/test/unit/src/Project/ProjectLocatorTests.js b/services/web/test/unit/src/Project/ProjectLocatorTests.js index 14de550401..6cea98a024 100644 --- a/services/web/test/unit/src/Project/ProjectLocatorTests.js +++ b/services/web/test/unit/src/Project/ProjectLocatorTests.js @@ -112,6 +112,30 @@ describe('ProjectLocator', function () { foundElement._id.should.equal(rootFolder._id) }) + it('should not return root folder when searching for docs', async function () { + await expect( + this.locator.promises.findElement({ + project_id: project._id, + element_id: rootFolder._id, + type: 'docs', + }) + ) + .to.eventually.be.rejectedWith(Errors.NotFoundError) + .and.eventually.have.property('message', 'entity not found') + }) + + it('should not return root folder when searching for files', async function () { + await expect( + this.locator.promises.findElement({ + project_id: project._id, + element_id: rootFolder._id, + type: 'files', + }) + ) + .to.eventually.be.rejectedWith(Errors.NotFoundError) + .and.eventually.have.property('message', 'entity not found') + }) + it('when at root', async function () { const { element: foundElement,