update-report.spec.js 4.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768
  1. 'use strict';
  2. const { expect } = require('chai');
  3. const { parse, serialize } = require('../../../../xml/report/update-report');
  4. const {
  5. updateReportMinXml,
  6. updateReportTelemetryStatusXml,
  7. updateReportMaxXml,
  8. updateReportMissingRequiredXml,
  9. } = require('./xml-requests');
  10. const {
  11. updateReportMin,
  12. updateReportMax,
  13. updateReportTelemetryStatus,
  14. } = require('./js-requests');
  15. describe('Update Report', function() {
  16. describe('parse', function() {
  17. it('successfully parses min xml', async function() {
  18. const parsedResponse = await parse(updateReportMinXml);
  19. expect(parsedResponse).to.eql(updateReportMin);
  20. });
  21. it('successfully parses max xml', async function() {
  22. const parsedResponse = await parse(updateReportMaxXml);
  23. expect(parsedResponse).to.eql(updateReportMax);
  24. });
  25. it('successfully parses TelemetryStatus xml', async function() {
  26. const parsedResponse = await parse(updateReportTelemetryStatusXml);
  27. expect(parsedResponse).to.eql(updateReportTelemetryStatus);
  28. });
  29. it('successfully parses serialized value', async function() {
  30. const serialized = serialize(updateReportMax);
  31. const parsedResponse = await parse(serialized);
  32. expect(parsedResponse).to.eql(updateReportMax);
  33. });
  34. it('successfully parses serialized TelemetryStatus value', async function() {
  35. const serialized = serialize(updateReportTelemetryStatus);
  36. const parsedResponse = await parse(serialized);
  37. expect(parsedResponse).to.eql(updateReportTelemetryStatus);
  38. });
  39. it('throws Error on missing required field', async function() {
  40. let lastError;
  41. try {
  42. await parse(updateReportMissingRequiredXml);
  43. } catch (e) {
  44. lastError = e;
  45. }
  46. expect(lastError).to.be.an('error');
  47. });
  48. });
  49. describe('serialize', function() {
  50. it('successfully serializes valid object', async function() {
  51. const serializedResponse = await serialize(updateReportMax);
  52. expect(serializedResponse).to.eql(
  53. '<oadr2b:oadrPayload xmlns:oadr2b="http://openadr.org/oadr-2.0b/2012/07"><oadr2b:oadrSignedObject><oadr2b:oadrUpdateReport xmlns:ei="http://docs.oasis-open.org/ns/energyinterop/201110" ei:schemaVersion="2.0b"><pyld:requestID xmlns:pyld="http://docs.oasis-open.org/ns/energyinterop/201110/payloads">87bbc1d44d903f317758</pyld:requestID><oadr2b:oadrReport><ei:reportRequestID xmlns:ei="http://docs.oasis-open.org/ns/energyinterop/201110">87bbc1d44d903f317758</ei:reportRequestID><ei:reportSpecifierID xmlns:ei="http://docs.oasis-open.org/ns/energyinterop/201110">TELEMETRY_USAGE</ei:reportSpecifierID><ei:createdDateTime xmlns:ei="http://docs.oasis-open.org/ns/energyinterop/201110">2020-05-08T21:27:49.591-06:00</ei:createdDateTime><ei:reportName xmlns:ei="http://docs.oasis-open.org/ns/energyinterop/201110">TELEMETRY_USAGE</ei:reportName><cal:duration xmlns:cal="urn:ietf:params:xml:ns:icalendar-2.0"><cal:duration>PT1M</cal:duration></cal:duration><cal:dtstart xmlns:cal="urn:ietf:params:xml:ns:icalendar-2.0"><cal:date-time>2020-05-08T21:26:49.562-06:00</cal:date-time></cal:dtstart><strm:intervals xmlns:strm="urn:ietf:params:xml:ns:icalendar-2.0:stream"><ei:interval xmlns:ei="http://docs.oasis-open.org/ns/energyinterop/201110"><cal:duration xmlns:cal="urn:ietf:params:xml:ns:icalendar-2.0"><cal:duration>PT30S</cal:duration></cal:duration><cal:dtstart xmlns:cal="urn:ietf:params:xml:ns:icalendar-2.0"><cal:date-time>2020-05-08T21:26:49.562-06:00</cal:date-time></cal:dtstart><oadr2b:oadrReportPayload><ei:payloadFloat><ei:value>161.97970171999845</ei:value></ei:payloadFloat><ei:rID>rep1</ei:rID><oadr2b:oadrDataQuality>Quality Good - Non Specific</oadr2b:oadrDataQuality></oadr2b:oadrReportPayload></ei:interval><ei:interval xmlns:ei="http://docs.oasis-open.org/ns/energyinterop/201110"><cal:duration xmlns:cal="urn:ietf:params:xml:ns:icalendar-2.0"><cal:duration>PT30S</cal:duration></cal:duration><cal:dtstart xmlns:cal="urn:ietf:params:xml:ns:icalendar-2.0"><cal:date-time>2020-05-08T21:27:19.594-06:00</cal:date-time></cal:dtstart><oadr2b:oadrReportPayload><ei:payloadFloat><ei:value>165.46849970752885</ei:value></ei:payloadFloat><ei:rID>rep1</ei:rID><oadr2b:oadrDataQuality>Quality Good - Non Specific</oadr2b:oadrDataQuality></oadr2b:oadrReportPayload></ei:interval><ei:interval xmlns:ei="http://docs.oasis-open.org/ns/energyinterop/201110"><cal:duration xmlns:cal="urn:ietf:params:xml:ns:icalendar-2.0"><cal:duration>PT30S</cal:duration></cal:duration><cal:dtstart xmlns:cal="urn:ietf:params:xml:ns:icalendar-2.0"><cal:date-time>2020-05-08T21:27:49.591-06:00</cal:date-time></cal:dtstart><oadr2b:oadrReportPayload><ei:payloadFloat><ei:value>162.30118577122087</ei:value></ei:payloadFloat><ei:rID>rep1</ei:rID><oadr2b:oadrDataQuality>Quality Good - Non Specific</oadr2b:oadrDataQuality></oadr2b:oadrReportPayload></ei:interval></strm:intervals></oadr2b:oadrReport></oadr2b:oadrUpdateReport></oadr2b:oadrSignedObject></oadr2b:oadrPayload>',
  54. );
  55. });
  56. });
  57. });