| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133 |
- sinon = require('sinon')
- chai = require('chai')
- should = chai.should()
- expect = chai.expect
- modulePath = "../../../../app/js/MongoManager.js"
- SandboxedModule = require('sandboxed-module')
- {ObjectId} = require("mongojs")
- describe "MongoManager", ->
- beforeEach ->
- @MongoManager = SandboxedModule.require modulePath, requires:
- "./mongojs" : { db: @db = {}, ObjectId: ObjectId }
- @callback = sinon.stub()
- @doc_id = ObjectId().toString()
- describe "getLastCompressedUpdate", ->
- beforeEach ->
- @update = "mock-update"
- @db.docHistory = {}
- @db.docHistory.find = sinon.stub().returns @db.docHistory
- @db.docHistory.sort = sinon.stub().returns @db.docHistory
- @db.docHistory.limit = sinon.stub().returns @db.docHistory
- @db.docHistory.toArray = sinon.stub().callsArgWith(0, null, [@update])
- @MongoManager.getLastCompressedUpdate @doc_id, @callback
- it "should find the updates for the doc", ->
- @db.docHistory.find
- .calledWith(doc_id: ObjectId(@doc_id))
- .should.equal true
- it "should limit to one result", ->
- @db.docHistory.limit
- .calledWith(1)
- .should.equal true
- it "should sort in descending timestamp order", ->
- @db.docHistory.sort
- .calledWith("meta.end_ts": -1)
- .should.equal true
- it "should call the call back with the update", ->
- @callback.calledWith(null, @update).should.equal true
- describe "deleteCompressedUpdate", ->
- beforeEach ->
- @update_id = ObjectId().toString()
- @db.docHistory =
- remove: sinon.stub().callsArg(1)
- @MongoManager.deleteCompressedUpdate(@update_id, @callback)
- it "should remove the update", ->
- @db.docHistory.remove
- .calledWith(_id: ObjectId(@update_id))
- .should.equal true
- it "should call the callback", ->
- @callback.called.should.equal true
- describe "popLastCompressedUpdate", ->
- describe "when there is no last update", ->
- beforeEach ->
- @MongoManager.getLastCompressedUpdate = sinon.stub().callsArgWith(1, null, null)
- @MongoManager.deleteCompressedUpdate = sinon.stub()
- @MongoManager.popLastCompressedUpdate @doc_id, @callback
- it "should get the last update", ->
- @MongoManager.getLastCompressedUpdate
- .calledWith(@doc_id)
- .should.equal true
- it "should not try to delete the last update", ->
- @MongoManager.deleteCompressedUpdate.called.should.equal false
- it "should call the callback with no update", ->
- @callback.calledWith(null, null).should.equal true
- describe "when there is an update", ->
- beforeEach ->
- @update = { _id: Object() }
- @MongoManager.getLastCompressedUpdate = sinon.stub().callsArgWith(1, null, @update)
- @MongoManager.deleteCompressedUpdate = sinon.stub().callsArgWith(1, null)
- @MongoManager.popLastCompressedUpdate @doc_id, @callback
- it "should get the last update", ->
- @MongoManager.getLastCompressedUpdate
- .calledWith(@doc_id)
- .should.equal true
- it "should delete the last update", ->
- @MongoManager.deleteCompressedUpdate
- .calledWith(@update._id)
- .should.equal true
- it "should call the callback with the update", ->
- @callback.calledWith(null, @update).should.equal true
- describe "insertCompressedUpdate", ->
- beforeEach ->
- @update = { op: "op", meta: "meta", v: "v"}
- @db.docHistory =
- insert: sinon.stub().callsArg(1)
- @MongoManager.insertCompressedUpdate @doc_id, @update, @callback
- it "should insert the update", ->
- @db.docHistory.insert
- .calledWith({
- doc_id: ObjectId(@doc_id),
- op: @update.op,
- meta: @update.meta,
- v: @update.v
- })
- .should.equal true
- it "should call the callback", ->
- @callback.called.should.equal true
- describe "insertCompressedUpdates", ->
- beforeEach (done) ->
- @updates = [ "mock-update-1", "mock-update-2" ]
- @MongoManager.insertCompressedUpdate = sinon.stub().callsArg(2)
- @MongoManager.insertCompressedUpdates @doc_id, @updates, (args...) =>
- @callback(args...)
- done()
- it "should insert each update", ->
- for update in @updates
- @MongoManager.insertCompressedUpdate
- .calledWith(@doc_id, update)
- .should.equal true
- it "should call the callback", ->
- @callback.called.should.equal true
|