'use strict' const test = require('ava') const { stub } = require('sinon') const Hapi = require('@hapi/hapi') const plugin = require('../lib/plugins/membership') const Grouping = require('../lib/models/grouping') const Membership = require('../lib/models/membership') const ProfileService = require('../lib/services/profile') const params = { profile_id: 45 } const mockReturn = { memberships: [ 'string' ], hasMatch: true, groupings: [ 'string' ] } const pathToTest = { method: 'POST', url: `/${params.profile_id}/join`, } test(`path ${pathToTest.url} should return ok on POST`, async t => { const server = Hapi.server() server.registerModel = () => {} server.models = () => ({ Grouping, Membership, }) await plugin.register(server) server.services()['profileService'] = new ProfileService(server) /** * TODO: adjust stubs to mock joinGrouping more closely */ stub(server.models()['Grouping'], 'query').returns(mockReturn.groupings) stub(server.models()['Membership'], 'query').returns(mockReturn.memberships) /** * 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() })