| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697 |
- '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: 4,
- profile_id: 3,
- grouping_id: 3,
- membership_type: 'participant',
- can_edit: false,
- is_active: true,
- },
- {
- membership_id: 5,
- profile_id: 1,
- grouping_id: 3,
- membership_type: 'participant',
- can_edit: false,
- is_active: false,
- },
- ],
- hasMatch: false,
- groupings: [],
- }
- 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',
- },
- }
-
- let membership_id = 4
- test(`path ${pathToTest.url} should return two memberships`, 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({
- whereIn: () => mockReturn.groupings,
- })
- stub(server.models()['Membership'], 'query').returns({
- where: pid => {
- if (pid == 'membership_id') {
- return {
- where: () => ({
- patch: () => {},
- }),
- }
- }
- return mockReturn.memberships.filter(
- membership => membership.profile_id == pid.profile_id,
- )
- },
- insert: toInsert => {
- const membership = { membership_id, ...toInsert }
- mockReturn.memberships.push(membership)
- membership_id++
- return membership
- },
- whereIn: () => 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)
- server.stop()
- })
|