UNPKG

@fruitsjs/core

Version:

Principal package with functions and models for building Fruits Eco-Blockchain applications.

75 lines (63 loc) 3.15 kB
import { getRecipientAmountsFromMultiOutPayment } from '../getRecipientAmountsFromMultiOutPayment'; import { TransactionType } from '../../constants/transactionType'; import { TransactionPaymentSubtype } from '../../constants'; import { convertNumberToNQTString } from '@fruitsjs/util'; const nqt = convertNumberToNQTString; describe('getRecipientAmountsFromMultiOutPayment', () => { it('returns recipients for Multi Out Same Amount Payment', () => { const transaction = { transaction: '123', amountNQT: nqt(100), type: TransactionType.Payment, subtype: TransactionPaymentSubtype.MultiOutSameAmount, attachment: { 'version.MultiOutCreation': 1, recipients: ['123', '456'] } }; const recipientAmounts = getRecipientAmountsFromMultiOutPayment(transaction); expect(recipientAmounts).toHaveLength(2); expect(recipientAmounts[0].recipient).toBe('123'); expect(recipientAmounts[0].amountNQT).toBe(nqt(50)); expect(recipientAmounts[1].recipient).toBe('456'); expect(recipientAmounts[1].amountNQT).toBe(nqt(50)); }); it('returns recipients for Multi Out Different Amount Payment', () => { const transaction = { transaction: '123', type: TransactionType.Payment, subtype: TransactionPaymentSubtype.MultiOut, attachment: { 'version.MultiOutCreation': 1, recipients: [['123', 'amountA'], ['456', 'amountB']] } }; const recipientAmounts = getRecipientAmountsFromMultiOutPayment(transaction); expect(recipientAmounts).toHaveLength(2); expect(recipientAmounts[0].recipient).toBe('123'); expect(recipientAmounts[0].amountNQT).toBe('amountA'); expect(recipientAmounts[1].recipient).toBe('456'); expect(recipientAmounts[1].amountNQT).toBe('amountB'); }); it('throws exception due to wrong type', () => { const transaction = { transaction: '123', type: TransactionType.Arbitrary, attachment: { 'version.MultiOutCreation': 1, recipients: [['123', 'ammountA'], ['456', 'amountB']] } }; try { getRecipientAmountsFromMultiOutPayment(transaction); expect(false).toBe('Expected Exception'); } catch (e) { expect(e.message).toContain('Transaction 123 is not of type \'Multi Out Payment\''); } }); it('throws exception due to wrong subtype', () => { const transaction = { transaction: '123', type: TransactionType.Payment, subtype: TransactionPaymentSubtype.Ordinary, attachment: { 'version.MultiOutCreation': 1, recipients: [['123', 'ammountA'], ['456', 'amountB']] } }; try { getRecipientAmountsFromMultiOutPayment(transaction); expect(false).toBe('Expected Exception'); } catch (e) { expect(e.message).toContain('Transaction 123 is not of type \'Multi Out Payment\''); } }); });