event.spec.js 2.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101
  1. 'use strict';
  2. const { expect } = require('chai');
  3. const { v4 } = require('uuid');
  4. const sinon = require('sinon');
  5. const rewire = require('rewire');
  6. const { requestEvent1, createdEvent1 } = require('../xml/event/js-requests');
  7. const { oadrPoll1 } = require('../xml/poll/js-requests');
  8. const { generatedFromNantumEvent1 } = require('../xml/event/js-responses');
  9. const { sampleEvent1 } = require('../modules/nantum-responses');
  10. describe('Event', function() {
  11. let clock;
  12. let sandbox, rewired;
  13. let fetchEventStub;
  14. after(async () => {
  15. clock.restore();
  16. });
  17. before(async () => {
  18. clock = sinon.useFakeTimers(new Date('2020-04-26T01:00:00.000Z').getTime());
  19. sandbox = sinon.createSandbox();
  20. let registration = {};
  21. fetchEventStub = sandbox.stub().resolves(sampleEvent1);
  22. rewired = rewire('../../../processes/event.js');
  23. rewired.__set__({
  24. nantum: {
  25. fetchRegistration: () => Promise.resolve(registration),
  26. fetchEvent: fetchEventStub,
  27. updateRegistration: async newRegistration => {
  28. registration = newRegistration;
  29. },
  30. },
  31. });
  32. });
  33. describe('retrieveEvents', function() {
  34. it('translates nantum event to oadr event', async () => {
  35. const venId = requestEvent1.venId;
  36. const commonName = v4()
  37. .replace(/-/g, '')
  38. .substring(0, 12);
  39. const events = await rewired.retrieveEvents(
  40. requestEvent1,
  41. commonName,
  42. venId,
  43. );
  44. expect(events).to.eql(generatedFromNantumEvent1);
  45. });
  46. });
  47. describe('poll and updateOptType', function() {
  48. it('should return the same event on subsequent polls if it has not been opted', async () => {
  49. const venId = oadrPoll1.venId;
  50. const commonName = v4()
  51. .replace(/-/g, '')
  52. .substring(0, 12);
  53. const pollResponse1 = await rewired.pollForEvents(
  54. oadrPoll1,
  55. commonName,
  56. venId,
  57. );
  58. expect(pollResponse1.events.length).to.eql(1);
  59. const pollResponse2 = await rewired.pollForEvents(
  60. oadrPoll1,
  61. commonName,
  62. venId,
  63. );
  64. expect(pollResponse2.events.length).to.eql(1);
  65. });
  66. it('should not return an opted event in subsequent poll response', async () => {
  67. const venId = oadrPoll1.venId;
  68. const commonName = v4()
  69. .replace(/-/g, '')
  70. .substring(0, 12);
  71. const pollResponse1 = await rewired.pollForEvents(
  72. oadrPoll1,
  73. commonName,
  74. venId,
  75. );
  76. expect(pollResponse1.events.length).to.eql(1);
  77. await rewired.updateOptType(createdEvent1, commonName, venId);
  78. const pollResponse2 = await rewired.pollForEvents(
  79. oadrPoll1,
  80. commonName,
  81. venId,
  82. );
  83. expect(pollResponse2).to.be.undefined;
  84. });
  85. });
  86. });