|
@@ -0,0 +1,68 @@
|
|
|
|
|
+sinon = require "sinon"
|
|
|
|
|
+chai = require("chai")
|
|
|
|
|
+chai.should()
|
|
|
|
|
+expect = chai.expect
|
|
|
|
|
+
|
|
|
|
|
+MockWebApi = require "./helpers/MockWebApi"
|
|
|
|
|
+DocUpdaterClient = require "./helpers/DocUpdaterClient"
|
|
|
|
|
+
|
|
|
|
|
+describe "Getting documents for project", ->
|
|
|
|
|
+ before (done) ->
|
|
|
|
|
+ @lines = ["one", "two", "three"]
|
|
|
|
|
+ @version = 42
|
|
|
|
|
+ setTimeout done, 200 # Give MockWebApi a chance to start
|
|
|
|
|
+
|
|
|
|
|
+ describe "when project state hash does not match", ->
|
|
|
|
|
+ before (done) ->
|
|
|
|
|
+ @projectStateHash = DocUpdaterClient.randomId()
|
|
|
|
|
+ [@project_id, @doc_id] = [DocUpdaterClient.randomId(), DocUpdaterClient.randomId()]
|
|
|
|
|
+
|
|
|
|
|
+ MockWebApi.insertDoc @project_id, @doc_id, {lines: @lines, version: @version}
|
|
|
|
|
+ DocUpdaterClient.preloadDoc @project_id, @doc_id, (error) =>
|
|
|
|
|
+ throw error if error?
|
|
|
|
|
+ DocUpdaterClient.getProjectDocs @project_id, @projectStateHash, (error, @res, @returnedDocs) =>
|
|
|
|
|
+ done()
|
|
|
|
|
+
|
|
|
|
|
+ it "should return a 409 Conflict response", ->
|
|
|
|
|
+ @res.statusCode.should.equal 409
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
|
|
+ describe "when project state hash matches", ->
|
|
|
|
|
+ before (done) ->
|
|
|
|
|
+ @projectStateHash = DocUpdaterClient.randomId()
|
|
|
|
|
+ [@project_id, @doc_id] = [DocUpdaterClient.randomId(), DocUpdaterClient.randomId()]
|
|
|
|
|
+
|
|
|
|
|
+ MockWebApi.insertDoc @project_id, @doc_id, {lines: @lines, version: @version}
|
|
|
|
|
+ DocUpdaterClient.preloadDoc @project_id, @doc_id, (error) =>
|
|
|
|
|
+ throw error if error?
|
|
|
|
|
+ DocUpdaterClient.getProjectDocs @project_id, @projectStateHash, (error, @res0, @returnedDocs0) =>
|
|
|
|
|
+ # set the hash
|
|
|
|
|
+ DocUpdaterClient.getProjectDocs @project_id, @projectStateHash, (error, @res, @returnedDocs) =>
|
|
|
|
|
+ # the hash should now match
|
|
|
|
|
+ done()
|
|
|
|
|
+
|
|
|
|
|
+ it "should return a 200 response", ->
|
|
|
|
|
+ @res.statusCode.should.equal 200
|
|
|
|
|
+
|
|
|
|
|
+ it "should return the documents", ->
|
|
|
|
|
+ @returnedDocs.should.deep.equal [ {_id: @doc_id, lines: @lines, v: @version} ]
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
|
|
+ describe "when the doc has been removed", ->
|
|
|
|
|
+ before (done) ->
|
|
|
|
|
+ @projectStateHash = DocUpdaterClient.randomId()
|
|
|
|
|
+ [@project_id, @doc_id] = [DocUpdaterClient.randomId(), DocUpdaterClient.randomId()]
|
|
|
|
|
+
|
|
|
|
|
+ MockWebApi.insertDoc @project_id, @doc_id, {lines: @lines, version: @version}
|
|
|
|
|
+ DocUpdaterClient.preloadDoc @project_id, @doc_id, (error) =>
|
|
|
|
|
+ throw error if error?
|
|
|
|
|
+ DocUpdaterClient.getProjectDocs @project_id, @projectStateHash, (error, @res0, @returnedDocs0) =>
|
|
|
|
|
+ # set the hash
|
|
|
|
|
+ DocUpdaterClient.deleteDoc @project_id, @doc_id, (error, res, body) =>
|
|
|
|
|
+ # delete the doc
|
|
|
|
|
+ DocUpdaterClient.getProjectDocs @project_id, @projectStateHash, (error, @res, @returnedDocs) =>
|
|
|
|
|
+ # the hash would match, but the doc has been deleted
|
|
|
|
|
+ done()
|
|
|
|
|
+
|
|
|
|
|
+ it "should return a 409 Conflict response", ->
|
|
|
|
|
+ @res.statusCode.should.equal 409
|