ProjectGetterTests.coffee 5.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152
  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. "metrics-sharelatex": timeAsyncMethod: sinon.stub()
  19. "../../models/Project": Project: @Project = {}
  20. "../Collaborators/CollaboratorsHandler": @CollaboratorsHandler = {}
  21. "logger-sharelatex":
  22. err:->
  23. log:->
  24. describe "getProjectWithoutDocLines", ->
  25. beforeEach ->
  26. @project =
  27. _id: @project_id = "56d46b0a1d3422b87c5ebcb1"
  28. @db.projects.find = sinon.stub().callsArgWith(2, null, [@project])
  29. describe "passing an id", ->
  30. beforeEach ->
  31. @ProjectGetter.getProjectWithoutDocLines @project_id, @callback
  32. it "should call find with the project id", ->
  33. @db.projects.find.calledWith(_id: ObjectId(@project_id)).should.equal true
  34. it "should exclude the doc lines", ->
  35. excludes =
  36. "rootFolder.docs.lines": 0
  37. "rootFolder.folder.docs.lines": 0
  38. "rootFolder.folder.folder.docs.lines": 0
  39. "rootFolder.folder.folder.folder.docs.lines": 0
  40. "rootFolder.folder.folder.folder.folder.docs.lines": 0
  41. "rootFolder.folder.folder.folder.folder.folder.docs.lines": 0
  42. "rootFolder.folder.folder.folder.folder.folder.folder.docs.lines": 0
  43. "rootFolder.folder.folder.folder.folder.folder.folder.folder.docs.lines": 0
  44. @db.projects.find.calledWith(sinon.match.any, excludes)
  45. .should.equal true
  46. it "should call the callback with the project", ->
  47. @callback.calledWith(null, @project).should.equal true
  48. describe "getProjectWithOnlyFolders", ->
  49. beforeEach ()->
  50. @project =
  51. _id: @project_id = "56d46b0a1d3422b87c5ebcb1"
  52. @db.projects.find = sinon.stub().callsArgWith(2, null, [@project])
  53. describe "passing an id", ->
  54. beforeEach ->
  55. @ProjectGetter.getProjectWithOnlyFolders @project_id, @callback
  56. it "should call find with the project id", ->
  57. @db.projects.find.calledWith(_id: ObjectId(@project_id)).should.equal true
  58. it "should exclude the docs and files linesaaaa", ->
  59. excludes =
  60. "rootFolder.docs": 0
  61. "rootFolder.fileRefs": 0
  62. "rootFolder.folder.docs": 0
  63. "rootFolder.folder.fileRefs": 0
  64. "rootFolder.folder.folder.docs": 0
  65. "rootFolder.folder.folder.fileRefs": 0
  66. "rootFolder.folder.folder.folder.docs": 0
  67. "rootFolder.folder.folder.folder.fileRefs": 0
  68. "rootFolder.folder.folder.folder.folder.docs": 0
  69. "rootFolder.folder.folder.folder.folder.fileRefs": 0
  70. "rootFolder.folder.folder.folder.folder.folder.docs": 0
  71. "rootFolder.folder.folder.folder.folder.folder.fileRefs": 0
  72. "rootFolder.folder.folder.folder.folder.folder.folder.docs": 0
  73. "rootFolder.folder.folder.folder.folder.folder.folder.fileRefs": 0
  74. "rootFolder.folder.folder.folder.folder.folder.folder.folder.docs": 0
  75. "rootFolder.folder.folder.folder.folder.folder.folder.folder.fileRefs": 0
  76. @db.projects.find.calledWith(sinon.match.any, excludes).should.equal true
  77. it "should call the callback with the project", ->
  78. @callback.calledWith(null, @project).should.equal true
  79. describe "getProject", ->
  80. beforeEach ()->
  81. @project =
  82. _id: @project_id = "56d46b0a1d3422b87c5ebcb1"
  83. @db.projects.find = sinon.stub().callsArgWith(2, null, [@project])
  84. describe "passing an id", ->
  85. beforeEach ->
  86. @ProjectGetter.getProjectWithOnlyFolders @project_id, @callback
  87. it "should call find with the project id", ->
  88. @db.projects.find.calledWith(_id: ObjectId(@project_id)).should.equal true
  89. it "should exclude the docs and files linesaaaa", ->
  90. excludes =
  91. "rootFolder.docs": 0
  92. "rootFolder.fileRefs": 0
  93. "rootFolder.folder.docs": 0
  94. "rootFolder.folder.fileRefs": 0
  95. "rootFolder.folder.folder.docs": 0
  96. "rootFolder.folder.folder.fileRefs": 0
  97. "rootFolder.folder.folder.folder.docs": 0
  98. "rootFolder.folder.folder.folder.fileRefs": 0
  99. "rootFolder.folder.folder.folder.folder.docs": 0
  100. "rootFolder.folder.folder.folder.folder.fileRefs": 0
  101. "rootFolder.folder.folder.folder.folder.folder.docs": 0
  102. "rootFolder.folder.folder.folder.folder.folder.fileRefs": 0
  103. "rootFolder.folder.folder.folder.folder.folder.folder.docs": 0
  104. "rootFolder.folder.folder.folder.folder.folder.folder.fileRefs": 0
  105. "rootFolder.folder.folder.folder.folder.folder.folder.folder.docs": 0
  106. "rootFolder.folder.folder.folder.folder.folder.folder.folder.fileRefs": 0
  107. @db.projects.find.calledWith(sinon.match.any, excludes).should.equal true
  108. it "should call the callback with the project", ->
  109. @callback.calledWith(null, @project).should.equal true
  110. describe "getProject", ->
  111. beforeEach ()->
  112. @project =
  113. _id: @project_id = "56d46b0a1d3422b87c5ebcb1"
  114. @db.projects.find = sinon.stub().callsArgWith(2, null, [@project])
  115. describe "findAllUsersProjects", ->
  116. beforeEach ->
  117. @fields = {"mock": "fields"}
  118. @Project.find = sinon.stub()
  119. @Project.find.withArgs({owner_ref: @user_id}, @fields).yields(null, ["mock-owned-projects"])
  120. @CollaboratorsHandler.getProjectsUserIsCollaboratorOf = sinon.stub()
  121. @CollaboratorsHandler.getProjectsUserIsCollaboratorOf.withArgs(@user_id, @fields).yields(null, ["mock-rw-projects"], ["mock-ro-projects"])
  122. @ProjectGetter.findAllUsersProjects @user_id, @fields, @callback
  123. it "should call the callback with all the projects", ->
  124. @callback
  125. .calledWith(null, ["mock-owned-projects"], ["mock-rw-projects"], ["mock-ro-projects"])
  126. .should.equal true