GettingProjectDocsTests.coffee 2.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768
  1. sinon = require "sinon"
  2. chai = require("chai")
  3. chai.should()
  4. expect = chai.expect
  5. MockWebApi = require "./helpers/MockWebApi"
  6. DocUpdaterClient = require "./helpers/DocUpdaterClient"
  7. describe "Getting documents for project", ->
  8. before (done) ->
  9. @lines = ["one", "two", "three"]
  10. @version = 42
  11. setTimeout done, 200 # Give MockWebApi a chance to start
  12. describe "when project state hash does not match", ->
  13. before (done) ->
  14. @projectStateHash = DocUpdaterClient.randomId()
  15. [@project_id, @doc_id] = [DocUpdaterClient.randomId(), DocUpdaterClient.randomId()]
  16. MockWebApi.insertDoc @project_id, @doc_id, {lines: @lines, version: @version}
  17. DocUpdaterClient.preloadDoc @project_id, @doc_id, (error) =>
  18. throw error if error?
  19. DocUpdaterClient.getProjectDocs @project_id, @projectStateHash, (error, @res, @returnedDocs) =>
  20. done()
  21. it "should return a 409 Conflict response", ->
  22. @res.statusCode.should.equal 409
  23. describe "when project state hash matches", ->
  24. before (done) ->
  25. @projectStateHash = DocUpdaterClient.randomId()
  26. [@project_id, @doc_id] = [DocUpdaterClient.randomId(), DocUpdaterClient.randomId()]
  27. MockWebApi.insertDoc @project_id, @doc_id, {lines: @lines, version: @version}
  28. DocUpdaterClient.preloadDoc @project_id, @doc_id, (error) =>
  29. throw error if error?
  30. DocUpdaterClient.getProjectDocs @project_id, @projectStateHash, (error, @res0, @returnedDocs0) =>
  31. # set the hash
  32. DocUpdaterClient.getProjectDocs @project_id, @projectStateHash, (error, @res, @returnedDocs) =>
  33. # the hash should now match
  34. done()
  35. it "should return a 200 response", ->
  36. @res.statusCode.should.equal 200
  37. it "should return the documents", ->
  38. @returnedDocs.should.deep.equal [ {_id: @doc_id, lines: @lines, v: @version} ]
  39. describe "when the doc has been removed", ->
  40. before (done) ->
  41. @projectStateHash = DocUpdaterClient.randomId()
  42. [@project_id, @doc_id] = [DocUpdaterClient.randomId(), DocUpdaterClient.randomId()]
  43. MockWebApi.insertDoc @project_id, @doc_id, {lines: @lines, version: @version}
  44. DocUpdaterClient.preloadDoc @project_id, @doc_id, (error) =>
  45. throw error if error?
  46. DocUpdaterClient.getProjectDocs @project_id, @projectStateHash, (error, @res0, @returnedDocs0) =>
  47. # set the hash
  48. DocUpdaterClient.deleteDoc @project_id, @doc_id, (error, res, body) =>
  49. # delete the doc
  50. DocUpdaterClient.getProjectDocs @project_id, @projectStateHash, (error, @res, @returnedDocs) =>
  51. # the hash would match, but the doc has been deleted
  52. done()
  53. it "should return a 409 Conflict response", ->
  54. @res.statusCode.should.equal 409