You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

membership-join.spec.js 1.4KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  1. 'use strict'
  2. const test = require('ava')
  3. const { stub } = require('sinon')
  4. const Hapi = require('@hapi/hapi')
  5. const plugin = require('../lib/plugins/membership')
  6. const Grouping = require('../lib/models/grouping')
  7. const Membership = require('../lib/models/membership')
  8. const ProfileService = require('../lib/services/profile')
  9. const params = {
  10. profile_id: 45
  11. }
  12. const mockReturn = {
  13. memberships: [
  14. 'string'
  15. ],
  16. hasMatch: true,
  17. groupings: [
  18. 'string'
  19. ]
  20. }
  21. const pathToTest = {
  22. method: 'POST',
  23. url: `/${params.profile_id}/join`,
  24. }
  25. test(`path ${pathToTest.url} should return ok on POST`, async t => {
  26. const server = Hapi.server()
  27. server.registerModel = () => {}
  28. server.models = () => ({
  29. Grouping,
  30. Membership,
  31. })
  32. await plugin.register(server)
  33. server.services()['profileService'] = new ProfileService(server)
  34. /**
  35. * TODO: adjust stubs to mock joinGrouping more closely
  36. */
  37. stub(server.models()['Grouping'], 'query').returns(mockReturn.groupings)
  38. stub(server.models()['Membership'], 'query').returns(mockReturn.memberships)
  39. /**
  40. * Test the server with registered models and services
  41. */
  42. const { payload } = await server.inject(pathToTest)
  43. const res = JSON.parse(payload)
  44. t.deepEqual(res.ok, true)
  45. t.deepEqual(res.data, mockReturn.responses)
  46. server.stop()
  47. })