| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879 |
- 'use strict'
-
- const test = require('ava')
- const { stub } = require('sinon')
- const Hapi = require('@hapi/hapi')
-
- const plugin = require('../lib/plugins/profile')
-
- const Response = require('../lib/models/response')
- const ResponseKey = require('../lib/models/response-key')
- /**
- * Route parameters
- */
- const params = {
- profile_id: 38,
- }
- const mockReturn = {
- responses: [
- {
- response_id: 1,
- profile_id: 38,
- response_key_id: 6,
- val: '2056',
- },
- {
- response_id: 2,
- profile_id: 38,
- response_key_id: 7,
- val: '90012',
- },
- ],
- }
- const pathToTest = {
- method: 'POST',
- url: `/${params.profile_id}/respond?response_key_id=5&val=2053`,
- }
-
- test('path /<profile_id>/respond should return ok on POST', async t => {
- /**
- * Create a new server and register services,
- * models and routes for testing
- * -
- * NOTE: We use a mocked registerModel() and register
- * models manually. Normally this is handled by
- * Schwifty at runtime.
- */
- const server = Hapi.server()
- /**
- * Overload so we don't register any models
- * using the plugin call (see plugins/profile.js)
- * and Manually load the model we need for the test
- */
- server.registerModel = () => {}
- server.models = () => ({ Response, ResponseKey })
- /**
- * Register Routes and Services as usual
- */
- await plugin.register(server)
- /**
- * Replace Objection model methods with our own mock functions
- * !: Janky - might be better to temp knex sqlite instance
- */
- stub(server.models()['Response'], 'query').returns({
- where: () => mockReturn.responses,
- insert: response => {
- response.response_id = 3
- mockReturn.responses.push(response)
- },
- })
-
- /**
- * Test the server with registered models and services
- */
- const { payload } = await server.inject(pathToTest)
- const res = JSON.parse(payload)
- t.deepEqual(res.ok, true)
- t.deepEqual(res.data, mockReturn.responses)
- server.stop()
- })
|