-
Notifications
You must be signed in to change notification settings - Fork 54
/
buildTx.test.ts
58 lines (49 loc) · 2.18 KB
/
buildTx.test.ts
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
/* eslint-disable func-style */
/* eslint-disable jsdoc/require-jsdoc */
import * as mocks from '../mocks';
import { Cardano } from '@cardano-sdk/core';
import { MaybeValidTx, MaybeValidTxOut, ObservableWallet, ValidTx, ValidTxOut, buildTx } from '../../src';
import { createWallet } from './util';
function assertTxIsValid(tx: MaybeValidTx): asserts tx is ValidTx {
expect(tx.isValid).toBe(true);
}
function assertTxOutIsValid(txOut: MaybeValidTxOut): asserts txOut is ValidTxOut {
expect(txOut.isValid).toBe(true);
}
describe('buildTx', () => {
let wallet: ObservableWallet;
beforeAll(async () => {
({ wallet } = await createWallet());
});
describe('outputs', () => {
it.skip('can add outputs one by one', async () => {
const tx = await buildTx(wallet).addOutput(mocks.utxo[0][1]).addOutput(mocks.utxo[1][1]).build();
assertTxIsValid(tx);
expect(tx.body.outputs.length).toBe(2);
});
describe('buildOutput', () => {
it.skip('can build a valid output', async () => {
const assetId = Cardano.AssetId('1ec85dcee27f2d90ec1f9a1e4ce74a667dc9be8b184463223f9c960150584c');
const assetQuantity = 100n;
const assets = new Map([[assetId, assetQuantity]]);
const address = Cardano.Address('addr_test1vr8nl4u0u6fmtfnawx2rxfz95dy7m46t6dhzdftp2uha87syeufdg');
const datum = Cardano.Hash32ByteBase16('3e33018e8293d319ef5b3ac72366dd28006bd315b715f7e7cfcbd3004129b80d');
const output1Coin = 10_000_000n;
const output2Base = mocks.utxo[0][1];
const txBuilder = buildTx(wallet);
const output1 = txBuilder
.buildOutput()
.address(address)
.coin(output1Coin)
.asset(assetId, assetQuantity)
.build();
assertTxOutIsValid(output1);
expect(output1.txOut).toEqual({ address, value: { assets, coin: output1Coin } });
const output2 = txBuilder.buildOutput(output2Base).assets(assets).datum(datum).build();
assertTxOutIsValid(output2);
expect(output2.txOut).toEqual({ datum, ...output2Base, value: { ...output2Base.value, assets } });
});
it.todo('validates required output properties and value constraints');
});
});
});