Skip to content

Commit 59e7650

Browse files
authored
test(statics): add test to convert AMS token config to base coin for all chains
2 parents bd24111 + 1933123 commit 59e7650

File tree

5 files changed

+404
-4
lines changed

5 files changed

+404
-4
lines changed

modules/statics/src/coins.ts

Lines changed: 7 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -100,7 +100,7 @@ export function createToken(token: AmsTokenConfig): Readonly<BaseCoin> | undefin
100100

101101
switch (family) {
102102
case 'arbeth':
103-
case 'avax':
103+
case 'avaxc':
104104
case 'bera':
105105
case 'bsc':
106106
case 'celo':
@@ -178,7 +178,10 @@ export function createToken(token: AmsTokenConfig): Readonly<BaseCoin> | undefin
178178
...commonArgs.slice(0, 4), // id, name, fullName, decimalPlaces
179179
token.tokenAddress, // tokenAddress
180180
token.contractAddress, // contractAddress
181-
...commonArgs.slice(4) // asset, features, prefix, suffix, network, primaryKeyCurve
181+
token.asset,
182+
token.features,
183+
token.programId,
184+
...commonArgs.slice(6) // prefix, suffix, network, primaryKeyCurve
182185
);
183186

184187
case 'sui':
@@ -226,7 +229,8 @@ export function createToken(token: AmsTokenConfig): Readonly<BaseCoin> | undefin
226229
...commonArgs, // id, name, fullName, decimalPlaces, asset, prefix, suffix, network, primaryKeyCurve
227230
token.baseUnit, // baseUnit
228231
token.isToken, // isToken
229-
token.kind // kind
232+
token.kind, // kind
233+
token.addressCoin // addressCoin
230234
);
231235
case 'asi':
232236
case 'atom':

modules/statics/src/ofc.ts

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -118,7 +118,8 @@ export function ofcToken(
118118
primaryKeyCurve: KeyCurve = KeyCurve.Secp256k1,
119119
baseUnit: BaseUnit = BaseUnit.OFC,
120120
isToken = true,
121-
kind: CoinKind = CoinKind.CRYPTO
121+
kind: CoinKind = CoinKind.CRYPTO,
122+
addressCoin = ''
122123
): Readonly<OfcCoin> {
123124
const filteredFeatures = getFilteredFeatures(suffix);
124125
if (filteredFeatures.length > 0) {
@@ -139,6 +140,7 @@ export function ofcToken(
139140
kind,
140141
primaryKeyCurve,
141142
baseUnit,
143+
addressCoin,
142144
})
143145
);
144146
}

modules/statics/src/tokenConfig.ts

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -382,6 +382,8 @@ export interface AmsTokenConfig {
382382
kind?: string;
383383
subnetId?: string;
384384
ticker?: string;
385+
programId?: string;
386+
addressCoin?: string;
385387
}
386388

387389
export interface TrimmedAmsNetworkConfig {

modules/statics/test/unit/coins.ts

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,9 @@ import {
3333
amsTokenWithUnsupportedNetwork,
3434
incorrectAmsTokenConfig,
3535
reducedAmsTokenConfig,
36+
reducedTokenConfigForAllChains,
3637
} from './resources/amsTokenConfig';
38+
import { Networks } from '../../src/networks';
3739

3840
interface DuplicateCoinObject {
3941
name: string;
@@ -1255,4 +1257,27 @@ describe('create token map using config details', () => {
12551257
const bgerchNetwork = bgerchToken?.network;
12561258
JSON.stringify(bgerchNetwork).should.eql(JSON.stringify(token?.network));
12571259
});
1260+
1261+
it('should form base coin for tokens of all the chains', () => {
1262+
const coinMap = createTokenMapUsingTrimmedConfigDetails(reducedTokenConfigForAllChains);
1263+
for (const tokenName of Object.keys(reducedTokenConfigForAllChains)) {
1264+
const coinMapToken = coinMap.get(tokenName);
1265+
const tokenConfig = reducedTokenConfigForAllChains[tokenName][0];
1266+
const networkName = tokenConfig.network.name;
1267+
const networkNameMap = new Map(
1268+
Object.values(Networks).flatMap((networkType) =>
1269+
Object.values(networkType).map((network) => [network.name, network])
1270+
)
1271+
);
1272+
const network = networkNameMap.get(networkName);
1273+
JSON.stringify(coinMapToken?.network).should.eql(JSON.stringify(network));
1274+
for (const entries of Object.entries(tokenConfig)) {
1275+
const [key, value] = entries;
1276+
if (key === 'network' || key === 'additionalFeatures' || key === 'excludedFeatures') {
1277+
continue;
1278+
}
1279+
coinMapToken?.[key].should.eql(value);
1280+
}
1281+
}
1282+
});
12581283
});

0 commit comments

Comments
 (0)