diff --git a/services/web/app/coffee/Features/Project/ProjectEntityHandler.coffee b/services/web/app/coffee/Features/Project/ProjectEntityHandler.coffee index 2fcb45acc5..ab0cbf8281 100644 --- a/services/web/app/coffee/Features/Project/ProjectEntityHandler.coffee +++ b/services/web/app/coffee/Features/Project/ProjectEntityHandler.coffee @@ -424,6 +424,26 @@ module.exports = ProjectEntityHandler = } }, {}, callback + _countElements : (project, callback)-> + + countFolder = (folder, cb = (err, count)->)-> + + jobs = _.map folder?.folders, (folder)-> + (asyncCb)-> countFolder folder, asyncCb + + async.series jobs, (err, subfolderCounts)-> + total = 0 + + if subfolderCounts?.length > 0 + total = _.reduce subfolderCounts, (a, b)-> return a + b + if folder?.docs?.length? + total += folder?.docs?.length + if folder?.fileRefs?.length? + total += folder?.fileRefs?.length + cb(null, total) + + countFolder project.rootFolder[0], callback + _putElement: (project_id, folder_id, element, type, callback = (err, path)->)-> sanitizeTypeOfElement = (elementType)-> lastChar = elementType.slice -1 diff --git a/services/web/app/coffee/models/Project.coffee b/services/web/app/coffee/models/Project.coffee index c1bed9cc94..dc9f0927fd 100644 --- a/services/web/app/coffee/models/Project.coffee +++ b/services/web/app/coffee/models/Project.coffee @@ -66,26 +66,7 @@ ProjectSchema.statics.findAllUsersProjects = (user_id, requiredFields, callback) this.find {readOnly_refs:user_id}, requiredFields, (err, readOnlyProjects)=> callback(err, projects, collabertions, readOnlyProjects) -countElements = (project, callback)-> - - countFolder = (folder, cb)-> - jobs = _.map folder?.folders, (folder)-> - (asyncCb)-> countFolder folder, asyncCb - async.series jobs, (err, results)-> - total = _.reduce results, (a, b)-> return a+b - total += folder?.docs?.length - total += folder?.fileRefs?.length - cb(null, subTotal) - countFolder project.rootFolder[0], callback - -getIndexOf = (searchEntity, id)-> - length = searchEntity.length - count = 0 - while(count < length) - if searchEntity[count]._id+"" == id+"" - return count - count++ diff --git a/services/web/test/UnitTests/coffee/Project/ProjectEntityHandlerTests.coffee b/services/web/test/UnitTests/coffee/Project/ProjectEntityHandlerTests.coffee index 3e0807c57a..42dc3a5dd9 100644 --- a/services/web/test/UnitTests/coffee/Project/ProjectEntityHandlerTests.coffee +++ b/services/web/test/UnitTests/coffee/Project/ProjectEntityHandlerTests.coffee @@ -1063,5 +1063,66 @@ describe 'ProjectEntityHandler', -> + describe "_countElements", -> + + beforeEach -> + @project.rootFolder[0].docs = [{_id:123}, {_id:345}] + @project.rootFolder[0].fileRefs = [{_id:123}, {_id:345}, {_id:456}] + @project.rootFolder[0].folders = [ + { + docs: + [{_id:123}, {_id:345}, {_id:456}] + fileRefs:{} + folders: [ + { + docs:[_id:1234], + fileRefs:[{_id:23123}, {_id:123213}, {_id:2312}] + folders:[ + { + docs:[{_id:321321}, {_id:123213}] + fileRefs:[{_id:312321}] + folders:[] + } + ] + } + ] + },{ + docs:[{_id:123}, {_id:32131}] + fileRefs:[] + folders:[ + { + docs:[{_id:3123}] + fileRefs:[{_id:321321}, {_id:321321}, {_id:313122}] + folders:0 + } + ] + } + ] + + it "should return the correct number", (done)-> + @ProjectEntityHandler._countElements @project, (err, count)-> + count.should.equal 21 + done() + + it "should deal with null folders", (done)-> + @project.rootFolder[0].folders[0].folders = undefined + @ProjectEntityHandler._countElements @project, (err, count)-> + count.should.equal 14 + done() + + it "should deal with null docs", (done)-> + @project.rootFolder[0].folders[0].docs = undefined + @ProjectEntityHandler._countElements @project, (err, count)-> + count.should.equal 18 + done() + + it "should deal with null fileRefs", (done)-> + @project.rootFolder[0].folders[0].folders[0].fileRefs = undefined + @ProjectEntityHandler._countElements @project, (err, count)-> + count.should.equal 18 + done() + + +