'use strict'; const { expect } = require('chai'); const { parse, serialize, } = require('../../../../xml/report/registered-report'); const { registeredReportMinXml, registeredReportMaxXml, registeredReportMissingRequiredXml, } = require('./xml-responses'); const { registeredReportMin, registeredReportMax } = require('./js-responses'); describe('Registered Report', function() { describe('parse', function() { it('successfully parses min xml', async function() { const parsedResponse = await parse(registeredReportMinXml); expect(parsedResponse).to.eql(registeredReportMin); }); it('successfully parses max xml', async function() { const parsedResponse = await parse(registeredReportMaxXml); expect(parsedResponse).to.eql(registeredReportMax); }); it('successfully parses serialized value', async function() { const serialized = serialize(registeredReportMax); const parsedResponse = await parse(serialized); expect(parsedResponse).to.eql(registeredReportMax); }); it('throws Error on missing required field', async function() { let lastError; try { await parse(registeredReportMissingRequiredXml); } catch (e) { lastError = e; } expect(lastError).to.be.an('error'); }); }); describe('serialize', function() { it('successfully serializes valid object', async function() { const serializedResponse = await serialize(registeredReportMax); expect(serializedResponse).to.eql( '200OK31c5ce71a68a73ece37087bbc1d44d903f317758TELEMETRY_USAGEPT30SPT1M2020-05-09T03:24:48.000ZPT24Hrep1x-notApplicablerep2x-notApplicable3d92d98e0b65d94e60a7TELEMETRY_STATUSPT30SPT2M2020-05-09T03:25:44.000ZPT24HTelemetryStatusReportx-notApplicable', ); }); }); });