import { expect } from 'chai' import ObjBuffer from '../src/obj-buffer.js' const obj = { cmd: 'test', _header: { name: 'a # name', id: 'i12345' }, arg: 5 } const ser = '66_%#_{"cmd":"test","_header":{"name":"a # name","id":"i12345"},"arg":5}' const otb = new ObjBuffer() const event = 'decoded' describe('Object to Buffer encode/decode', function () { it('Should stringify and encode a message/object', async function () { expect(await otb.encode(obj)).to.equal(ser) }) it('Should encode and decode a message', function () { return new Promise(async (resolve, reject) => { otb.once(event, mes => { // console.log('message received', mes) expect(mes).to.deep.equal(obj) resolve() }) const ser = await otb.encode(obj) // console.log('encoded', ser) otb.decode(ser) }) }) it('encode throws an error if object contains the delmiter', async function () { obj._header.name = '_%#_' return otb.encode(obj) .then(res => { expect.fail('no error was thrown for') }) .catch(error => { // console.log('error', error) expect(error).to.be.an('error') } ) }) it('Should queue message if paused and emit if resumed', function () { return new Promise(async (resolve, reject) => { otb.once(event, mes => { // console.log('queued message', mes) expect(mes).to.deep.equal(obj) resolve() }) obj._header.name = 'name' const ser = await otb.encode(obj) otb.pause() otb.decode(ser) // console.log(otb.state, otb.queue[0]) expect(otb.queue[0]).to.deep.equal(obj) otb.resume() }) }) })