@@ -3,6 +3,9 @@ import { Cardano } from '@cardano-sdk/core';
3
3
import { OutputValidator , createOutputValidator } from '../../src' ;
4
4
5
5
describe ( 'createOutputValidator' , ( ) => {
6
+ const address = Cardano . PaymentAddress (
7
+ 'addr_test1qqydn46r6mhge0kfpqmt36m6q43knzsd9ga32n96m89px3nuzcjqw982pcftgx53fu5527z2cj2tkx2h8ux2vxsg475qypp3m9'
8
+ ) ;
6
9
let validator : OutputValidator ;
7
10
8
11
beforeAll ( ( ) => {
@@ -14,67 +17,101 @@ describe('createOutputValidator', () => {
14
17
} ) ;
15
18
} ) ;
16
19
17
- it ( 'validateValue validates minimum coin quantity' , async ( ) => {
18
- expect ( ( await validator . validateValue ( { coins : 2_000_000n } ) ) . coinMissing ) . toBe ( 0n ) ;
19
- expect ( ( await validator . validateValue ( { coins : 500_000n } ) ) . coinMissing ) . toBeGreaterThan ( 0n ) ;
20
- } ) ;
20
+ describe ( 'validateOutput' , ( ) => {
21
+ it ( 'validates minimum coin quantity' , async ( ) => {
22
+ expect ( ( await validator . validateOutput ( { address, value : { coins : 2_000_000n } } ) ) . coinMissing ) . toBe ( 0n ) ;
23
+ expect ( ( await validator . validateOutput ( { address, value : { coins : 500_000n } } ) ) . coinMissing ) . toBeGreaterThan ( 0n ) ;
24
+ } ) ;
21
25
22
- it ( 'validateValue validates bundle size' , async ( ) => {
23
- expect (
24
- (
25
- await validator . validateValue ( {
26
- assets : new Map ( [
27
- [ Cardano . AssetId ( 'b01fb3b8c3dd6b3705a5dc8bcd5a70759f70ad5d97a72005caeac3c652657675746f31333237' ) , 1n ]
28
- ] ) ,
29
- coins : 2_000_000n
30
- } )
31
- ) . tokenBundleSizeExceedsLimit
32
- ) . toBe ( false ) ;
33
- expect (
34
- (
35
- await validator . validateValue ( {
36
- assets : new Map ( [
37
- [ Cardano . AssetId ( 'b01fb3b8c3dd6b3705a5dc8bcd5a70759f70ad5d97a72005caeac3c652657675746f31333237' ) , 1n ] ,
38
- [ Cardano . AssetId ( 'c01fb3b8c3dd6b3705a5dc8bcd5a70759f70ad5d97a72005caeac3c652657675746f31333237' ) , 2n ]
39
- ] ) ,
40
- coins : 2_000_000n
41
- } )
42
- ) . tokenBundleSizeExceedsLimit
43
- ) . toBe ( true ) ;
44
- } ) ;
26
+ it ( 'validates bundle size' , async ( ) => {
27
+ expect (
28
+ (
29
+ await validator . validateOutput ( {
30
+ address,
31
+ value : {
32
+ assets : new Map ( [
33
+ [ Cardano . AssetId ( 'b01fb3b8c3dd6b3705a5dc8bcd5a70759f70ad5d97a72005caeac3c652657675746f31333237' ) , 1n ]
34
+ ] ) ,
35
+ coins : 2_000_000n
36
+ }
37
+ } )
38
+ ) . tokenBundleSizeExceedsLimit
39
+ ) . toBe ( false ) ;
40
+ expect (
41
+ (
42
+ await validator . validateOutput ( {
43
+ address,
44
+ value : {
45
+ assets : new Map ( [
46
+ [ Cardano . AssetId ( 'b01fb3b8c3dd6b3705a5dc8bcd5a70759f70ad5d97a72005caeac3c652657675746f31333237' ) , 1n ] ,
47
+ [ Cardano . AssetId ( 'c01fb3b8c3dd6b3705a5dc8bcd5a70759f70ad5d97a72005caeac3c652657675746f31333237' ) , 2n ]
48
+ ] ) ,
49
+ coins : 2_000_000n
50
+ }
51
+ } )
52
+ ) . tokenBundleSizeExceedsLimit
53
+ ) . toBe ( true ) ;
54
+ } ) ;
45
55
46
- it ( 'validateValue validates negative asset quantity' , async ( ) => {
47
- expect (
48
- (
49
- await validator . validateValue ( {
50
- assets : new Map ( [
51
- [ Cardano . AssetId ( 'b01fb3b8c3dd6b3705a5dc8bcd5a70759f70ad5d97a72005caeac3c652657675746f31333237' ) , 1n ]
52
- ] ) ,
53
- coins : 2_000_000n
54
- } )
55
- ) . negativeAssetQty
56
- ) . toBe ( false ) ;
57
- expect (
58
- (
59
- await validator . validateValue ( {
60
- assets : new Map ( [
61
- [ Cardano . AssetId ( 'b01fb3b8c3dd6b3705a5dc8bcd5a70759f70ad5d97a72005caeac3c652657675746f31333237' ) , 1n ] ,
62
- [ Cardano . AssetId ( 'c01fb3b8c3dd6b3705a5dc8bcd5a70759f70ad5d97a72005caeac3c652657675746f31333237' ) , - 2n ]
63
- ] ) ,
64
- coins : 2_000_000n
65
- } )
66
- ) . negativeAssetQty
67
- ) . toBe ( true ) ;
68
- expect (
69
- (
70
- await validator . validateValue ( {
71
- assets : new Map ( [
72
- [ Cardano . AssetId ( 'b01fb3b8c3dd6b3705a5dc8bcd5a70759f70ad5d97a72005caeac3c652657675746f31333237' ) , 1n ] ,
73
- [ Cardano . AssetId ( 'c01fb3b8c3dd6b3705a5dc8bcd5a70759f70ad5d97a72005caeac3c652657675746f31333237' ) , 0n ]
74
- ] ) ,
75
- coins : 2_000_000n
76
- } )
77
- ) . negativeAssetQty
78
- ) . toBe ( true ) ;
56
+ it ( 'validates negative asset quantity' , async ( ) => {
57
+ expect (
58
+ (
59
+ await validator . validateOutput ( {
60
+ address,
61
+ value : {
62
+ assets : new Map ( [
63
+ [ Cardano . AssetId ( 'b01fb3b8c3dd6b3705a5dc8bcd5a70759f70ad5d97a72005caeac3c652657675746f31333237' ) , 1n ]
64
+ ] ) ,
65
+ coins : 2_000_000n
66
+ }
67
+ } )
68
+ ) . negativeAssetQty
69
+ ) . toBe ( false ) ;
70
+ expect (
71
+ (
72
+ await validator . validateOutput ( {
73
+ address,
74
+ value : {
75
+ assets : new Map ( [
76
+ [ Cardano . AssetId ( 'b01fb3b8c3dd6b3705a5dc8bcd5a70759f70ad5d97a72005caeac3c652657675746f31333237' ) , 1n ] ,
77
+ [ Cardano . AssetId ( 'c01fb3b8c3dd6b3705a5dc8bcd5a70759f70ad5d97a72005caeac3c652657675746f31333237' ) , - 2n ]
78
+ ] ) ,
79
+ coins : 2_000_000n
80
+ }
81
+ } )
82
+ ) . negativeAssetQty
83
+ ) . toBe ( true ) ;
84
+ expect (
85
+ (
86
+ await validator . validateOutput ( {
87
+ address,
88
+ value : {
89
+ assets : new Map ( [
90
+ [ Cardano . AssetId ( 'b01fb3b8c3dd6b3705a5dc8bcd5a70759f70ad5d97a72005caeac3c652657675746f31333237' ) , 1n ] ,
91
+ [ Cardano . AssetId ( 'c01fb3b8c3dd6b3705a5dc8bcd5a70759f70ad5d97a72005caeac3c652657675746f31333237' ) , 0n ]
92
+ ] ) ,
93
+ coins : 2_000_000n
94
+ }
95
+ } )
96
+ ) . negativeAssetQty
97
+ ) . toBe ( true ) ;
98
+ } ) ;
99
+
100
+ it ( 'uses output address size as minimum coin computation parameter' , async ( ) => {
101
+ const value : Cardano . Value = { coins : 123n } ;
102
+ const { minimumCoin : byronAddressMinimumCoin } = await validator . validateOutput ( {
103
+ address : Cardano . PaymentAddress (
104
+ 'DdzFFzCqrht4PWfBGtmrQz4x1GkZHYLVGbK7aaBkjWxujxzz3L5GxCgPiTsks5RjUr3yX9KvwKjNJBt7ZzPCmS3fUQrGeRvo9Y1YBQKQ'
105
+ ) ,
106
+ value
107
+ } ) ;
108
+ const { minimumCoin : shelleyAddressMinimumCoin } = await validator . validateOutput ( {
109
+ address : Cardano . PaymentAddress (
110
+ 'addr_test1qqydn46r6mhge0kfpqmt36m6q43knzsd9ga32n96m89px3nuzcjqw982pcftgx53fu5527z2cj2tkx2h8ux2vxsg475qypp3m9'
111
+ ) ,
112
+ value
113
+ } ) ;
114
+ expect ( byronAddressMinimumCoin ) . toBeGreaterThan ( shelleyAddressMinimumCoin ) ;
115
+ } ) ;
79
116
} ) ;
80
117
} ) ;
0 commit comments