@@ -2,7 +2,7 @@ import 'should';
22
33import { TestBitGo , TestBitGoAPI } from '@bitgo/sdk-test' ;
44import { BitGoAPI } from '@bitgo/sdk-api' ;
5- import { XrpToken } from '../../src' ;
5+ import { XrpMptToken , XrpToken } from '../../src' ;
66
77describe ( 'Xrp Tokens' , function ( ) {
88 let bitgo : TestBitGoAPI ;
@@ -35,3 +35,52 @@ describe('Xrp Tokens', function () {
3535 xrpTokenCoin . currencyCode . should . equal ( '524C555344000000000000000000000000000000' ) ;
3636 } ) ;
3737} ) ;
38+
39+ describe ( 'Xrp MPT Tokens' , function ( ) {
40+ let bitgo : TestBitGoAPI ;
41+ let mptCoin : XrpMptToken ;
42+
43+ before ( function ( ) {
44+ bitgo = TestBitGo . decorate ( BitGoAPI , { env : 'test' } ) ;
45+ XrpMptToken . createTokenConstructors ( ) . forEach ( ( { name, coinConstructor } ) => {
46+ bitgo . safeRegister ( name , coinConstructor ) ;
47+ } ) ;
48+ bitgo . initializeTestVars ( ) ;
49+ mptCoin = bitgo . coin ( 'txrp:sec0' ) as XrpMptToken ;
50+ } ) ;
51+
52+ it ( 'should register all testnet MPT tokens' , function ( ) {
53+ const names = XrpMptToken . createTokenConstructors ( ) . map ( ( { name } ) => name ) ;
54+ names . should . containEql ( 'txrp:sec0' ) ;
55+ names . should . containEql ( 'txrp:sec2' ) ;
56+ names . should . containEql ( 'txrp:wrapt' ) ;
57+ names . should . containEql ( 'txrp:ntsec' ) ;
58+ names . should . containEql ( 'txrp:feesec' ) ;
59+ } ) ;
60+
61+ it ( 'should return constants for txrp:sec0' , function ( ) {
62+ mptCoin . getChain ( ) . should . equal ( 'txrp:sec0' ) ;
63+ mptCoin . getBaseChain ( ) . should . equal ( 'txrp' ) ;
64+ mptCoin . getFullName ( ) . should . equal ( 'XRP MPT Token' ) ;
65+ mptCoin . getBaseFactor ( ) . should . equal ( 1 ) ; // assetScale 0 → 10^0
66+ mptCoin . coin . should . equal ( 'txrp' ) ;
67+ mptCoin . network . should . equal ( 'Testnet' ) ;
68+ mptCoin . decimalPlaces . should . equal ( 0 ) ;
69+ mptCoin . contractAddress . should . equal ( '01135794225BAA3A7F9DA001AF93FB258C517F50E20DE771' ) ;
70+ mptCoin . canTransfer . should . equal ( true ) ;
71+ } ) ;
72+
73+ it ( 'should reflect canTransfer=false for non-transferable tokens' , function ( ) {
74+ const ntsec = bitgo . coin ( 'txrp:ntsec' ) as XrpMptToken ;
75+ ntsec . canTransfer . should . equal ( false ) ;
76+ ntsec . contractAddress . should . equal ( '01135791225BAA3A7F9DA001AF93FB258C517F50E20DE771' ) ;
77+ } ) ;
78+
79+ it ( 'should return correct baseFactor for tokens with non-zero assetScale' , function ( ) {
80+ const sec2 = bitgo . coin ( 'txrp:sec2' ) as XrpMptToken ; // assetScale 2
81+ sec2 . getBaseFactor ( ) . should . equal ( 100 ) ; // 10^2
82+
83+ const wrapt = bitgo . coin ( 'txrp:wrapt' ) as XrpMptToken ; // assetScale 8
84+ wrapt . getBaseFactor ( ) . should . equal ( 100000000 ) ; // 10^8
85+ } ) ;
86+ } ) ;
0 commit comments