ProjectGetterTests.coffee 3.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394
  1. sinon = require('sinon')
  2. chai = require('chai')
  3. should = chai.should()
  4. expect = chai.expect
  5. modulePath = "../../../../app/js/Features/Project/ProjectGetter.js"
  6. SandboxedModule = require('sandboxed-module')
  7. ObjectId = require("mongojs").ObjectId
  8. assert = require("chai").assert
  9. describe "ProjectGetter", ->
  10. beforeEach ->
  11. @callback = sinon.stub()
  12. @ProjectGetter = SandboxedModule.require modulePath, requires:
  13. "../../infrastructure/mongojs":
  14. db: @db =
  15. projects: {}
  16. users: {}
  17. ObjectId: ObjectId
  18. "../../models/Project": Project: @Project = {}
  19. "../Collaborators/CollaboratorsHandler": @CollaboratorsHandler = {}
  20. describe "getProjectWithoutDocLines", ->
  21. beforeEach ->
  22. @project =
  23. _id: @project_id = "0123456789abcd9876543210"
  24. @db.projects.find = sinon.stub().callsArgWith(2, null, [@project])
  25. @ProjectGetter.getProjectWithoutDocLines @project_id, @callback
  26. it "should call find with the project id", ->
  27. @db.projects.find.calledWith(_id: ObjectId(@project_id)).should.equal true
  28. it "should exclude the doc lines", ->
  29. excludes =
  30. "rootFolder.docs.lines": 0
  31. "rootFolder.folder.docs.lines": 0
  32. "rootFolder.folder.folder.docs.lines": 0
  33. "rootFolder.folder.folder.folder.docs.lines": 0
  34. "rootFolder.folder.folder.folder.folder.docs.lines": 0
  35. "rootFolder.folder.folder.folder.folder.folder.docs.lines": 0
  36. "rootFolder.folder.folder.folder.folder.folder.folder.docs.lines": 0
  37. "rootFolder.folder.folder.folder.folder.folder.folder.folder.docs.lines": 0
  38. @db.projects.find.calledWith(sinon.match.any, excludes)
  39. .should.equal true
  40. it "should call the callback with the project", ->
  41. @callback.calledWith(null, @project).should.equal true
  42. describe "getProjectWithOnlyFolders", ->
  43. beforeEach ->
  44. @project =
  45. _id: @project_id = "0123456789abcd9876543210"
  46. @db.projects.find = sinon.stub().callsArgWith(2, null, [@project])
  47. @ProjectGetter.getProjectWithOnlyFolders @project_id, @callback
  48. it "should call find with the project id", ->
  49. @db.projects.find.calledWith(_id: ObjectId(@project_id)).should.equal true
  50. it "should exclude the docs and files lines", ->
  51. excludes =
  52. "rootFolder.docs": 0
  53. "rootFolder.fileRefs": 0
  54. "rootFolder.folder.docs": 0
  55. "rootFolder.folder.fileRefs": 0
  56. "rootFolder.folder.folder.docs": 0
  57. "rootFolder.folder.folder.fileRefs": 0
  58. "rootFolder.folder.folder.folder.docs": 0
  59. "rootFolder.folder.folder.folder.fileRefs": 0
  60. "rootFolder.folder.folder.folder.folder.docs": 0
  61. "rootFolder.folder.folder.folder.folder.fileRefs": 0
  62. "rootFolder.folder.folder.folder.folder.folder.docs": 0
  63. "rootFolder.folder.folder.folder.folder.folder.fileRefs": 0
  64. "rootFolder.folder.folder.folder.folder.folder.folder.docs": 0
  65. "rootFolder.folder.folder.folder.folder.folder.folder.fileRefs": 0
  66. "rootFolder.folder.folder.folder.folder.folder.folder.folder.docs": 0
  67. "rootFolder.folder.folder.folder.folder.folder.folder.folder.fileRefs": 0
  68. @db.projects.find.calledWith(sinon.match.any, excludes)
  69. .should.equal true
  70. it "should call the callback with the project", ->
  71. @callback.calledWith(null, @project).should.equal true
  72. describe "findAllUsersProjects", ->
  73. beforeEach ->
  74. @fields = {"mock": "fields"}
  75. @Project.find = sinon.stub()
  76. @Project.find.withArgs({owner_ref: @user_id}, @fields).yields(null, ["mock-owned-projects"])
  77. @CollaboratorsHandler.getProjectsUserIsCollaboratorOf = sinon.stub()
  78. @CollaboratorsHandler.getProjectsUserIsCollaboratorOf.withArgs(@user_id, @fields).yields(null, ["mock-rw-projects"], ["mock-ro-projects"])
  79. @ProjectGetter.findAllUsersProjects @user_id, @fields, @callback
  80. it "should call the callback with all the projects", ->
  81. @callback
  82. .calledWith(null, ["mock-owned-projects"], ["mock-rw-projects"], ["mock-ro-projects"])
  83. .should.equal true