overleaf/services/web/test/UnitTests/coffee/Versioning/VersioningApiControllerTests.coffee
2014-02-12 10:23:40 +00:00

89 lines
2.5 KiB
CoffeeScript

spies = require('chai-spies')
chai = require('chai').use(spies)
sinon = require('sinon')
should = chai.should()
modulePath = "../../../../app/js/Features/Versioning/VersioningApiController"
SandboxedModule = require('sandboxed-module')
MockRequest = require "../helpers/MockRequest"
MockResponse = require "../helpers/MockResponse"
describe "VersioningApiController", ->
beforeEach ->
@handler = {}
@controller = SandboxedModule.require modulePath, requires:
'./VersioningApiHandler':@handler
@req = new MockRequest()
@res = new MockResponse()
describe "takeSnapshot", ->
beforeEach ->
@error = null
@handler.takeSnapshot = (project_id, message, callback) =>
callback(@error)
sinon.spy @handler, "takeSnapshot"
@req.params = Project_id: "project_id"
describe "successfully", ->
beforeEach ->
@error = null
@req.body = message: "hello world"
@controller.takeSnapshot(@req, @res)
it "should call VersioningApiHandler.takeSnapshot", ->
@handler.takeSnapshot.calledWith(
"project_id", @req.body.message
).should.equal true
it "should return a successful response", ->
@res.returned.should.equal true
@res.success.should.equal true
@res.body.should.equal "{}"
describe "without message", ->
beforeEach ->
@error = null
@controller.takeSnapshot(@req, @res)
it "should use a default message", ->
@handler.takeSnapshot.calledWith(
"project_id", "Manual snapshot"
).should.equal true
describe "with errors", ->
beforeEach ->
@error = new Error("Oops")
@next = sinon.stub()
@controller.takeSnapshot(@req, @res, @next)
it "should call next() with the error", ->
@res.returned.should.equal false
@next.called.should.equal true
it 'enable versioning in the handler', (done)->
project_id = "1234"
@handler.enableVersioning = (sentProjectId, callback)->
sentProjectId.should.equal project_id
callback null
@controller.enableVersioning project_id, ->
done()
it 'proxys list versions', (done)->
shouldProxy @controller.listVersions, @handler, done
it 'proxys get version', (done)->
shouldProxy @controller.getVersion, @handler, done
it 'proxys get verion file', (done)->
shouldProxy @controller.getVersionFile, @handler, done
shouldProxy = (fun, handler, callback)->
req = {"stuf":"here"}
res = {"other":"stuff"}
handler.proxyToVersioningApi = (proxyReq, proxyRes)->
proxyReq.should.deep.equal req
proxyRes.should.deep.equal res
callback()
fun req, res