ProjectGetterTests.coffee 2.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879
  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. describe "getProjectWithoutDocLines", ->
  19. beforeEach ->
  20. @project =
  21. _id: @project_id = "0123456789abcd9876543210"
  22. @db.projects.find = sinon.stub().callsArgWith(2, null, [@project])
  23. @ProjectGetter.getProjectWithoutDocLines @project_id, @callback
  24. it "should call find with the project id", ->
  25. @db.projects.find.calledWith(_id: ObjectId(@project_id)).should.equal true
  26. it "should exclude the doc lines", ->
  27. excludes =
  28. "rootFolder.docs.lines": 0
  29. "rootFolder.folder.docs.lines": 0
  30. "rootFolder.folder.folder.docs.lines": 0
  31. "rootFolder.folder.folder.folder.docs.lines": 0
  32. "rootFolder.folder.folder.folder.folder.docs.lines": 0
  33. "rootFolder.folder.folder.folder.folder.folder.docs.lines": 0
  34. "rootFolder.folder.folder.folder.folder.folder.folder.docs.lines": 0
  35. "rootFolder.folder.folder.folder.folder.folder.folder.folder.docs.lines": 0
  36. @db.projects.find.calledWith(sinon.match.any, excludes)
  37. .should.equal true
  38. it "should call the callback with the project", ->
  39. @callback.calledWith(null, @project).should.equal true
  40. describe "populateProjectWithUsers", ->
  41. beforeEach ->
  42. @users = []
  43. @user_lookup = {}
  44. for i in [0..4]
  45. @users[i] = _id: ObjectId.createPk()
  46. @user_lookup[@users[i]._id.toString()] = @users[i]
  47. @project =
  48. _id: ObjectId.createPk()
  49. owner_ref: @users[0]._id
  50. readOnly_refs: [@users[1]._id, @users[2]._id]
  51. collaberator_refs: [@users[3]._id, @users[4]._id]
  52. @db.users.find = (query, callback) =>
  53. callback null, [@user_lookup[query._id.toString()]]
  54. sinon.spy @db.users, "find"
  55. @ProjectGetter.populateProjectWithUsers @project, (err, project)=>
  56. @callback err, project
  57. it "should look up each user", ->
  58. for user in @users
  59. @db.users.find.calledWith(_id: user._id).should.equal true
  60. it "should set the owner_ref to the owner", ->
  61. @project.owner_ref.should.equal @users[0]
  62. it "should set the readOnly_refs to the read only users", ->
  63. expect(@project.readOnly_refs).to.deep.equal [@users[1], @users[2]]
  64. it "should set the collaberator_refs to the collaborators", ->
  65. expect(@project.collaberator_refs).to.deep.equal [@users[3], @users[4]]
  66. it "should call the callback", ->
  67. assert.deepEqual @callback.args[0][1], @project