mirror of
				https://github.com/Xahau/xahau.js.git
				synced 2025-11-04 04:55:48 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			106 lines
		
	
	
		
			3.0 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
			
		
		
	
	
			106 lines
		
	
	
		
			3.0 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
import { assert } from 'chai'
 | 
						|
 | 
						|
import { Payment, Wallet } from '../../../src'
 | 
						|
import serverUrl from '../serverUrl'
 | 
						|
import {
 | 
						|
  setupClient,
 | 
						|
  teardownClient,
 | 
						|
  type XrplIntegrationTestContext,
 | 
						|
} from '../setup'
 | 
						|
import { generateFundedWallet, testTransaction } from '../utils'
 | 
						|
 | 
						|
// how long before each test case times out
 | 
						|
const TIMEOUT = 20000
 | 
						|
 | 
						|
describe('Payment', function () {
 | 
						|
  let testContext: XrplIntegrationTestContext
 | 
						|
  let paymentTx: Payment
 | 
						|
  const AMOUNT = '10000000'
 | 
						|
  // This wallet is used for DeliverMax related tests
 | 
						|
  let senderWallet: Wallet
 | 
						|
 | 
						|
  beforeEach(async () => {
 | 
						|
    // this payment transaction JSON needs to be refreshed before every test.
 | 
						|
    // Because, we tinker with Amount and DeliverMax fields in the API v2 tests
 | 
						|
    paymentTx = {
 | 
						|
      TransactionType: 'Payment',
 | 
						|
      Account: senderWallet.classicAddress,
 | 
						|
      Amount: AMOUNT,
 | 
						|
      Destination: 'rfkE1aSy9G8Upk4JssnwBxhEv5p4mn2KTy',
 | 
						|
    }
 | 
						|
  })
 | 
						|
 | 
						|
  beforeAll(async () => {
 | 
						|
    testContext = await setupClient(serverUrl)
 | 
						|
    senderWallet = await generateFundedWallet(testContext.client)
 | 
						|
  })
 | 
						|
  afterAll(async () => teardownClient(testContext))
 | 
						|
 | 
						|
  it(
 | 
						|
    'base',
 | 
						|
    async () => {
 | 
						|
      const tx: Payment = {
 | 
						|
        TransactionType: 'Payment',
 | 
						|
        Account: testContext.wallet.classicAddress,
 | 
						|
        Destination: senderWallet.classicAddress,
 | 
						|
        Amount: '1000',
 | 
						|
      }
 | 
						|
      await testTransaction(testContext.client, tx, testContext.wallet)
 | 
						|
    },
 | 
						|
    TIMEOUT,
 | 
						|
  )
 | 
						|
 | 
						|
  it(
 | 
						|
    'Validate Payment transaction API v2: Payment Transaction: Specify Only Amount field',
 | 
						|
    async () => {
 | 
						|
      const result = await testTransaction(
 | 
						|
        testContext.client,
 | 
						|
        paymentTx,
 | 
						|
        senderWallet,
 | 
						|
      )
 | 
						|
 | 
						|
      assert.equal(result.result.engine_result_code, 0)
 | 
						|
      assert.equal((result.result.tx_json as Payment).Amount, AMOUNT)
 | 
						|
    },
 | 
						|
    TIMEOUT,
 | 
						|
  )
 | 
						|
 | 
						|
  it(
 | 
						|
    'Validate Payment transaction API v2: Payment Transaction: Specify Only DeliverMax field',
 | 
						|
    async () => {
 | 
						|
      // @ts-expect-error -- DeliverMax is a non-protocol, RPC level field in Payment transactions
 | 
						|
      paymentTx.DeliverMax = paymentTx.Amount
 | 
						|
      // @ts-expect-error -- DeliverMax is a non-protocol, RPC level field in Payment transactions
 | 
						|
      delete paymentTx.Amount
 | 
						|
 | 
						|
      const result = await testTransaction(
 | 
						|
        testContext.client,
 | 
						|
        paymentTx,
 | 
						|
        senderWallet,
 | 
						|
      )
 | 
						|
 | 
						|
      assert.equal(result.result.engine_result_code, 0)
 | 
						|
      assert.equal((result.result.tx_json as Payment).Amount, AMOUNT)
 | 
						|
    },
 | 
						|
    TIMEOUT,
 | 
						|
  )
 | 
						|
 | 
						|
  it(
 | 
						|
    'Validate Payment transaction API v2: Payment Transaction: identical DeliverMax and Amount fields',
 | 
						|
    async () => {
 | 
						|
      // @ts-expect-error -- DeliverMax is a non-protocol, RPC level field in Payment transactions
 | 
						|
      paymentTx.DeliverMax = paymentTx.Amount
 | 
						|
 | 
						|
      const result = await testTransaction(
 | 
						|
        testContext.client,
 | 
						|
        paymentTx,
 | 
						|
        senderWallet,
 | 
						|
      )
 | 
						|
 | 
						|
      assert.equal(result.result.engine_result_code, 0)
 | 
						|
      assert.equal((result.result.tx_json as Payment).Amount, AMOUNT)
 | 
						|
    },
 | 
						|
    TIMEOUT,
 | 
						|
  )
 | 
						|
})
 |