| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990 |
- '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: 3
- }
- const mockReturn = {
- memberships: [
- { membership_id: 1, grouping_id: 1, is_active: false, profile_id: 3},
- { membership_id: 2, grouping_id: 2, is_active: false, profile_id: 1},
- { membership_id: 4, grouping_id: 3, is_active: false, profile_id: 2},
- ],
- hasMatch: true,
- groupings: [
- { grouping_id: 1, profiles: [{ profile_id: 1 }, { profile_id: 3 }] },
- { grouping_id: 2, profiles: [{ profile_id: 2 }, { profile_id: 1 }] },
- ]
- }
- const pathToTest = {
- method: 'POST',
- url: `/${params.profile_id}/join`,
- payload: {
- grouping_id: 3,
- grouping_name: 'test_match',
- grouping_type: 'test_group',
- target_id: 1,
- role: 'participant'
- },
- }
-
- test(`path ${pathToTest.url} should return ok on POST`, async t => {
- console.log('-------------------------------\n')
- 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({
- whereIn: () => {
- return mockReturn.groupings
- },
- })
- stub(server.models()['Membership'], 'query').returns({
- where: (pid) => {
- console.log('pid', pid)
- if(pid == 'membership_id') {
- return {
- where: () => ({
- patch: () => {}
- })
- }
- }
- return mockReturn.memberships.filter(membership => {
- return membership.profile_id == pid.profile_id
- })
- },
- insert: () => {
- mockReturn.memberships.push({ membership_id: 3, grouping_id: 3, is_active: true })
- },
- whereIn: () => {
- return mockReturn.memberships
- },
- })
-
- /**
- * Test the server with registered models and services
- */
- const { payload } = await server.inject(pathToTest)
- console.log('payload', payload)
- const res = JSON.parse(payload)
- t.deepEqual(res.ok, true)
- t.deepEqual(res.data, mockReturn)
- server.stop()
- })
|