event.spec.js 2.5 KB

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