'use strict'; const { expect } = require('chai'); const { parse, serialize } = require('../../../../xml/poll/oadr-response'); const { responseMinXml, responseMaxXml, responseMissingRequiredXml, } = require('./xml-responses'); const { responseMin, responseMax } = require('./js-responses'); describe('Response', function() { describe('parse', function() { it('successfully parses min xml', async function() { const parsedResponse = await parse(responseMinXml); expect(parsedResponse).to.eql(responseMin); }); it('successfully parses max xml', async function() { const parsedResponse = await parse(responseMaxXml); expect(parsedResponse).to.eql(responseMax); }); it('successfully parses serialized value', async function() { const serialized = serialize(responseMax); const parsedResponse = await parse(serialized); expect(parsedResponse).to.eql(responseMax); }); it('throws Error on missing required field', async function() { let lastError; try { await parse(responseMissingRequiredXml); } catch (e) { lastError = e; } expect(lastError).to.be.an('error'); }); }); describe('serialize', function() { it('successfully serializes valid object', async function() { const serializedResponse = await serialize(responseMax); expect(serializedResponse).to.eql( '200OK9383fc5946cb0e14ef5aD8:1D:4B:20:5A:65:4C:50:32:FA', ); }); }); });