import { ValidationError } from 'xrpl-local/common/errors' import { verifyTrustSet } from './../../src/models/transactions/trustSet' import { assert } from 'chai' import { verify } from '../../src/models/transactions' /** * TrustSet Transaction Verification Testing. * * Providing runtime verification testing for each specific transaction type. */ describe('TrustSet', function () { let trustSet beforeEach(function () { trustSet = { TransactionType: 'TrustSet', Account: 'rUn84CUYbNjRoTQ6mSW7BVJPSVJNLb1QLo', LimitAmount: { currency: 'XRP', issuer: 'rcXY84C4g14iFp6taFXjjQGVeHqSCh9RX', value: '4329.23', }, QualityIn: 1234, QualityOut: 4321, } as any }) it('verifies valid TrustSet', function () { assert.doesNotThrow(() => verifyTrustSet(trustSet)) assert.doesNotThrow(() => verify(trustSet)) }) it('throws when LimitAmount is missing', function () { delete trustSet.LimitAmount assert.throws( () => verifyTrustSet(trustSet), ValidationError, 'TrustSet: missing field LimitAmount', ) assert.throws( () => verify(trustSet), ValidationError, 'TrustSet: missing field LimitAmount', ) }) it('throws when LimitAmount is invalid', function () { trustSet.LimitAmount = 1234 assert.throws( () => verifyTrustSet(trustSet), ValidationError, 'TrustSet: invalid LimitAmount', ) assert.throws( () => verify(trustSet), ValidationError, 'TrustSet: invalid LimitAmount', ) }) it('throws when QualityIn is not a number', function () { trustSet.QualityIn = '1234' assert.throws( () => verifyTrustSet(trustSet), ValidationError, 'TrustSet: QualityIn must be a number', ) assert.throws( () => verify(trustSet), ValidationError, 'TrustSet: QualityIn must be a number', ) }) it('throws when QualityOut is not a number', function () { trustSet.QualityOut = '4321' assert.throws( () => verifyTrustSet(trustSet), ValidationError, 'TrustSet: QualityOut must be a number', ) assert.throws( () => verify(trustSet), ValidationError, 'TrustSet: QualityOut must be a number', ) }) })