Skip to content

Instantly share code, notes, and snippets.

@JogoShugh
Created December 4, 2014 22:07
Show Gist options
  • Save JogoShugh/110b807c1806654cb9d3 to your computer and use it in GitHub Desktop.
Save JogoShugh/110b807c1806654cb9d3 to your computer and use it in GitHub Desktop.
postDigest = (shouldBehaveThusly) ->
request(app).post("/api/digest", "myfirstdigest").end shouldBehaveThusly
getDigest = (path, shouldBehaveThusly) ->
request(app).get(path).end shouldBehaveThusly
chai = require("chai")
should = chai.should()
express = require("express")
app = express()
chai = require("chai")
sinon = require("sinon")
sinonChai = require("sinon-chai")
request = require("supertest")
proxyquire = require("proxyquire")
hypermediaResponseStub = digest: sinon.spy()
controller = proxyquire("../../api/digestController",
"./hypermediaResponse": hypermediaResponseStub
)
chai.use sinonChai
chai.config.includeStack = true
controller.init app
describe "digestController", ->
describe "when creating a digest", ->
it "should request digest hypermedia", (done) ->
postDigest (err, res) ->
hypermediaResponseStub.digest.should.have.been.calledOnce
done()
describe "when requesting a digest", ->
describe "with an invalid, non-uuid digest identifier", ->
get = (shouldBehaveThusly) ->
getDigest "/api/digest/not_a_uuid", shouldBehaveThusly
it "it returns a 400 status code", (done) ->
get (err, res) ->
res.statusCode.should.equal 400
done()
it "it returns a meaningful error message in the body", (done) ->
get (err, res) ->
res.text.should.equal "The value \"not_a_uuid\" is not recognized as a valid digest identifier."
done()
describe "with a valid, uuid digest identifier", ->
get = (shouldBehaveThusly) ->
getDigest "/api/digest/" + uuid, shouldBehaveThusly
uuid = "e9be4a71-f6ca-4f02-b431-d74489dee5d0"
it "it returns a 200 status code", (done) ->
get (err, res) ->
res.statusCode.should.equal 200
done()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment