'use strict'; const { expect } = require('chai'); const { parse, serialize } = require('../../../../xml/report/register-report'); const { registerReportMinXml, registerReportMaxXml, registerReportCaXml, registerReportMissingRequiredXml, } = require('./xml-requests'); const { registerReportMin, registerReportMax, registerReportCa, } = require('./js-requests'); describe('Register Report', function() { describe('parse', function() { it('successfully parses min xml', async function() { const parsedResponse = await parse(registerReportMinXml); expect(parsedResponse).to.eql(registerReportMin); }); it('successfully parses max xml', async function() { const parsedResponse = await parse(registerReportMaxXml); expect(parsedResponse).to.eql(registerReportMax); }); it('successfully parses Ca xml', async function() { const parsedResponse = await parse(registerReportCaXml); expect(parsedResponse).to.eql(registerReportCa); }); it('successfully parses serialized value', async function() { const serialized = serialize(registerReportMax); const parsedResponse = await parse(serialized); expect(parsedResponse).to.eql(registerReportMax); }); it('throws Error on missing required field', async function() { let lastError; try { await parse(registerReportMissingRequiredXml); } catch (e) { lastError = e; } expect(lastError).to.be.an('error'); }); }); describe('serialize', function() { it('successfully serializes valid object', async function() { const serializedResponse = await serialize(registerReportMax); expect(serializedResponse).to.eql( '31c5ce71a68a73ece370D8:1D:4B:20:5A:65:4C:50:32:FA31c5ce71a68a73ece370TELEMETRY_STATUS2020-05-07T10:05:41.421-06:00METADATA_TELEMETRY_STATUSTelemetryStatusReportx-resourceStatusx-notApplicablePT1MPT1HfalsePT1H3d92d98e0b65d94e60a7TELEMETRY_USAGE2020-05-07T10:05:41.421-06:00METADATA_TELEMETRY_USAGErep1usageDirect ReadPT1MPT1Hfalserep2usageDirect ReadPT1MPT1HfalsePT1H', ); }); }); });