12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182 |
- import mongoose from 'mongoose'
- import RESTController from './RESTController'
- import { Model } from '../routeGenModel'
- const spyFind = jest.spyOn(Model, 'find')
- const spyFindOne = jest.spyOn(Model, 'findOne')
- const spyCreate = jest.spyOn(Model, 'create')
- const spyRemove = jest.spyOn(Model, 'remove')
- describe('REST Controller', () => {
- mongoose.connect('mongodb://localhost/rest-controller')
- const ModelController = new RESTController(Model)
- const createdModel = {
- name: 'Gisele'
- }
- const updatedModel = {
- name: 'Adriana'
- }
- let createdId = null
- it('creates an element', () => {
- return ModelController.create(createdModel)
- .then(response => {
- // Check the copy due to a bug with jest.
- const copy = {}
- Object.keys(Model.schema.paths).forEach(key => {
- copy[key] = response.model[key]
- })
- createdId = response.model._id
- expect(copy).toMatchObject({__v: 0, ...createdModel})
- expect(spyCreate).toHaveBeenCalledWith(createdModel)
- expect(spyCreate).toHaveBeenCalledTimes(1)
- spyCreate.mockReset()
- })
- })
- it('reads an element', () => {
- return ModelController.read(createdId)
- .then(response => {
- // Check the copy due to a bug with jest.
- const copy = {}
- Object.keys(Model.schema.paths).forEach(key => {
- copy[key] = response.model[key]
- })
- expect(copy).toMatchObject({__v: 0, ...createdModel})
- expect(spyFindOne).toHaveBeenCalledWith({ _id: createdId })
- expect(spyFindOne).toHaveBeenCalledTimes(1)
- spyFindOne.mockReset()
- })
- })
- it('lists elements', () => {
- return ModelController.list()
- .then(response => {
- // Check the copy due to a bug with jest.
- const copy = {}
- Object.keys(Model.schema.paths).forEach(key => {
- copy[key] = response.model[0][key]
- })
- expect(copy).toMatchObject({__v: 0, ...createdModel})
- expect(response.model).toHaveLength(2)
- expect(spyFind).toHaveBeenCalledWith({})
- expect(spyFind).toHaveBeenCalledTimes(1)
- spyFind.mockReset()
- })
- })
- it('update elements', () => {
- return ModelController.update(createdId, { name: 'Adriana' })
- .then(response => {
- // Check the copy due to a bug with jest.
- const copy = {}
- Object.keys(Model.schema.paths).forEach(key => {
- copy[key] = response.model[0][key]
- })
- expect(copy).toMatchObject({__v: 0, ...updatedModel})
- expect(spyFind).toHaveBeenCalledWith({})
- expect(spyFind).toHaveBeenCalledTimes(1)
- spyFind.mockReset()
- })
- })
- })
|