Nelze vybrat více než 25 témat Téma musí začínat písmenem nebo číslem, může obsahovat pomlčky („-“) a může být dlouhé až 35 znaků.

membership-join.spec.js 2.5KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697
  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: 3,
  11. }
  12. const mockReturn = {
  13. memberships: [
  14. {
  15. membership_id: 4,
  16. profile_id: 3,
  17. grouping_id: 3,
  18. membership_type: 'participant',
  19. can_edit: false,
  20. is_active: true,
  21. },
  22. {
  23. membership_id: 5,
  24. profile_id: 1,
  25. grouping_id: 3,
  26. membership_type: 'participant',
  27. can_edit: false,
  28. is_active: false,
  29. },
  30. ],
  31. hasMatch: false,
  32. groupings: [],
  33. }
  34. const pathToTest = {
  35. method: 'POST',
  36. url: `/${params.profile_id}/join`,
  37. payload: {
  38. grouping_id: 3,
  39. grouping_name: 'test_match',
  40. grouping_type: 'test_group',
  41. target_id: 1,
  42. role: 'participant',
  43. },
  44. }
  45. let membership_id = 4
  46. test(`path ${pathToTest.url} should return two memberships`, async t => {
  47. const server = Hapi.server()
  48. server.registerModel = () => {}
  49. server.models = () => ({
  50. Grouping,
  51. Membership,
  52. })
  53. await plugin.register(server)
  54. server.services()['profileService'] = new ProfileService(server)
  55. /**
  56. * TODO: adjust stubs to mock joinGrouping more closely
  57. */
  58. stub(server.models()['Grouping'], 'query').returns({
  59. whereIn: () => mockReturn.groupings,
  60. })
  61. stub(server.models()['Membership'], 'query').returns({
  62. where: pid => {
  63. if (pid == 'membership_id') {
  64. return {
  65. where: () => ({
  66. patch: () => {},
  67. }),
  68. }
  69. }
  70. return mockReturn.memberships.filter(
  71. membership => membership.profile_id == pid.profile_id,
  72. )
  73. },
  74. insert: toInsert => {
  75. const membership = { membership_id, ...toInsert }
  76. mockReturn.memberships.push(membership)
  77. membership_id++
  78. return membership
  79. },
  80. whereIn: () => mockReturn.memberships,
  81. })
  82. /**
  83. * Test the server with registered models and services
  84. */
  85. const { payload } = await server.inject(pathToTest)
  86. const res = JSON.parse(payload)
  87. t.deepEqual(res.ok, true)
  88. t.deepEqual(res.data, mockReturn)
  89. server.stop()
  90. })