route.test.js 1.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. import router, { routes } from './route'
  2. import samples from './_sampleData'
  3. import sinon from 'sinon'
  4. import mongoose from 'mongoose'
  5. jest.mock('./model')
  6. function ResClass () {
  7. this._status = null
  8. this._data = null
  9. this.status = (status) => { this._status = status }
  10. this.send = (data) => { this._data = data }
  11. this.json = (data) => {
  12. this._data = data
  13. this._status = 200
  14. }
  15. }
  16. describe('Route handlers', () => {
  17. it('handles the GET request for lists.', () => {
  18. // if no _id is passed, return a list of objects.
  19. // apply the limits correctly
  20. const reqList = { params: {}, query: {limit: 2.4, offset: 1.2} }
  21. const res = new ResClass()
  22. const returnValue = routes.get(reqList, res)
  23. expect(returnValue).toBeUndefined()
  24. expect(res._data).toEqual(samples.slice(2, 4))
  25. expect(res._status).toBe(200)
  26. })
  27. it('handles the GET request for single documents.', () => {
  28. const reqOne = { params: {id: '18a0d6883d34293254afae42'}, query: undefined }
  29. const res = new ResClass()
  30. const returnValue = routes.get(reqOne, res)
  31. expect(returnValue).toBeUndefined()
  32. expect(res._data).toBe(samples[0])
  33. expect(res._status).toBe(200)
  34. })
  35. it('handles the POST request.', () => {
  36. const reqOne = { params: {id: '18a0d6883d34293254afae42'}, query: undefined }
  37. const res = new ResClass()
  38. const returnValue = routes.post(reqOne, res)
  39. expect(returnValue).toBeUndefined()
  40. expect(res._data).toBe(samples[0])
  41. expect(res._status).toBe(200)
  42. })
  43. })