Files
xahau.js/test/models/escrowCreate.ts
Nathan Nichols db8f7c1bcb refactor: Define EscrowCreate transaction model (#1530)
refactor: Define EscrowCreate transaction model (#1530)
2021-10-04 14:10:09 -04:00

132 lines
3.6 KiB
TypeScript

import { ValidationError } from 'xrpl-local/common/errors'
import { verifyEscrowCreate } from './../../src/models/transactions/escrowCreate'
import { assert } from 'chai'
/**
* EscrowCreate Transaction Verification Testing
*
* Providing runtime verification testing for each specific transaction type
*/
describe('EscrowCreate Transaction Verification', function () {
let escrow
beforeEach(() => {
escrow = {
Account: "rf1BiGeXwwQoi8Z2ueFYTEXSwuJYfV2Jpn",
TransactionType: "EscrowCreate",
Amount: "10000",
Destination: "rsA2LpzuawewSBQXkiju3YQTMzW13pAAdW",
CancelAfter: 533257958,
FinishAfter: 533171558,
Condition: "A0258020E3B0C44298FC1C149AFBF4C8996FB92427AE41E4649B934CA495991B7852B855810100",
DestinationTag: 23480,
SourceTag: 11747
}
})
it (`verifies valid EscrowCreate`, () => {
assert.doesNotThrow(() => verifyEscrowCreate(escrow))
})
it (`Missing amount`, () => {
delete escrow.Amount
assert.throws(
() => verifyEscrowCreate(escrow),
ValidationError,
"EscrowCreate: missing field Amount"
)
})
it (`Missing destination`, () => {
delete escrow.Destination
assert.throws(
() => verifyEscrowCreate(escrow),
ValidationError,
"EscrowCreate: missing field Destination"
)
})
it (`throws w/ invalid Destination`, () => {
escrow.Destination = 10
assert.throws(
() => verifyEscrowCreate(escrow),
ValidationError,
"EscrowCreate: Destination must be a string"
)
})
it (`throws w/ invalid Amount`, () => {
escrow.Amount = 1000
assert.throws(
() => verifyEscrowCreate(escrow),
ValidationError,
"EscrowCreate: Amount must be a string"
)
})
it (`invalid CancelAfter`, () => {
escrow.CancelAfter = "100"
assert.throws(
() => verifyEscrowCreate(escrow),
ValidationError,
"EscrowCreate: CancelAfter must be a number"
)
})
it (`invalid FinishAfter`, () => {
escrow.FinishAfter = "1000"
assert.throws(
() => verifyEscrowCreate(escrow),
ValidationError,
"EscrowCreate: FinishAfter must be a number"
)
})
it (`invalid Condition`, () => {
escrow.Condition = 0x141243
assert.throws(
() => verifyEscrowCreate(escrow),
ValidationError,
"EscrowCreate: Condition must be a string"
)
})
it (`invalid DestinationTag`, () => {
escrow.DestinationTag = "100"
assert.throws(
() => verifyEscrowCreate(escrow),
ValidationError,
"EscrowCreate: DestinationTag must be a number"
)
})
it (`Missing both CancelAfter and FinishAfter`, () => {
delete escrow.CancelAfter
delete escrow.FinishAfter
assert.throws(
() => verifyEscrowCreate(escrow),
ValidationError,
"EscrowCreate: Either CancelAfter or FinishAfter must be specified"
)
})
it (`Missing both Condition and FinishAfter`, () => {
delete escrow.Condition
delete escrow.FinishAfter
assert.throws(
() => verifyEscrowCreate(escrow),
ValidationError,
"EscrowCreate: Either Condition or FinishAfter must be specified"
)
})
})