GettingProjectDocsTests.coffee 2.6 KB

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