UNPKG

@axerunners/axecore-lib

Version:

A pure and powerful JavaScript Axe library.

116 lines (88 loc) 4.07 kB
/* eslint-disable */ // TODO: Remove previous line and work through linting issues at next edit var expect = require('chai').expect; var sinon = require('sinon'); var AxecoreLib = require('../../../index'); var SubTxTopupPayload = AxecoreLib.Transaction.Payload.SubTxTopupPayload; var validSubTxTopupPayloadJSON = { version: 1, regTxHash: '45fd882f0df723d90a01a56ee1e83f45bf2446fd45d03522f390aae5b7f12737' }; var validSubTxTopupPayloadHexString = '01003727f1b7e5aa90f32235d045fd4624bf453fe8e16ea5010ad923f70d2f88fd45'; var validSubTxTopupPayloadBuffer = Buffer.from(validSubTxTopupPayloadHexString, 'hex'); var validSubTxTopupPayload = SubTxTopupPayload.fromBuffer(validSubTxTopupPayloadBuffer); describe('SubTxTopupPayload', function () { describe('.fromBuffer', function () { beforeEach(function () { sinon.spy(SubTxTopupPayload.prototype, 'validate'); }); afterEach(function () { SubTxTopupPayload.prototype.validate.restore(); }); it('Should return instance of SubTxTopupPayload and call #validate on it', function() { var payload = SubTxTopupPayload.fromBuffer(Buffer.from(validSubTxTopupPayloadHexString, 'hex')); expect(payload.version).to.be.equal(1); expect(payload.regTxHash).to.be.equal('45fd882f0df723d90a01a56ee1e83f45bf2446fd45d03522f390aae5b7f12737'); }); it('Should throw in case if there is some unexpected information in raw payload', function() { var payloadWithAdditionalZeros = Buffer.from(validSubTxTopupPayloadHexString + '0000', 'hex'); expect(function() { SubTxTopupPayload.fromBuffer(payloadWithAdditionalZeros) }).to.throw('Failed to parse payload: raw payload is bigger than expected.'); }); }); describe('.fromJSON', function () { before(function() { sinon.spy(SubTxTopupPayload.prototype, 'validate'); }); it('Should return instance of SubTxTopupPayload and call #validate on it', function() { var payload = SubTxTopupPayload.fromJSON(validSubTxTopupPayloadJSON); expect(payload.version).to.be.equal(1); expect(payload.regTxHash).to.be.equal('45fd882f0df723d90a01a56ee1e83f45bf2446fd45d03522f390aae5b7f12737'); }); after(function () { SubTxTopupPayload.prototype.validate.restore(); }) }); describe('#toJSON', function () { beforeEach(function () { sinon.spy(SubTxTopupPayload.prototype, 'validate'); }); afterEach(function () { SubTxTopupPayload.prototype.validate.restore(); }); it('Should be able to serialize payload JSON', function () { var payload = validSubTxTopupPayload.copy(); var payloadJSON = payload.toJSON(); expect(payloadJSON.version).to.be.equal(1); expect(payloadJSON.regTxHash).to.be.equal('45fd882f0df723d90a01a56ee1e83f45bf2446fd45d03522f390aae5b7f12737'); }); it('Should call #validate', function () { var payload = SubTxTopupPayload.fromJSON(validSubTxTopupPayloadJSON); SubTxTopupPayload.prototype.validate.resetHistory(); payload.toJSON(); expect(payload.validate.callCount).to.be.equal(1); }); }); describe('#toBuffer', function () { beforeEach(function () { sinon.spy(SubTxTopupPayload.prototype, 'validate'); }); afterEach(function () { SubTxTopupPayload.prototype.validate.restore(); }); it('Should be able to serialize payload to Buffer', function () { var payload = validSubTxTopupPayload.copy(); var serializedPayload = payload.toBuffer(); var restoredPayload = SubTxTopupPayload.fromBuffer(serializedPayload); expect(restoredPayload.version).to.be.equal(1); expect(restoredPayload.regTxHash).to.be.equal('45fd882f0df723d90a01a56ee1e83f45bf2446fd45d03522f390aae5b7f12737'); }); it('Should call #validate', function () { var payload = SubTxTopupPayload.fromJSON(validSubTxTopupPayloadJSON); SubTxTopupPayload.prototype.validate.resetHistory(); payload.toBuffer(); expect(payload.validate.callCount).to.be.equal(1); }); }); });