UNPKG

@yoroi/portfolio

Version:

The Portfolio package of Yoroi SDK

101 lines (99 loc) 4.35 kB
"use strict"; var _types = require("@yoroi/types"); var _common = require("@yoroi/common"); var _tokenBalance = require("../adapters/token-balance.mocks"); var _tokenInfo = require("../adapters/token-info.mocks"); var _sorting = require("./sorting"); describe('sorting', () => { it('sorts alphabetically', () => { const sortedItems = [...items].sort((0, _sorting.alpha)(name => name.toLocaleLowerCase())); // prettier-ignore expect(sortedItems).toEqual(['', 'a', 'a', 'b', 'c']); }); it('moves items to the start', () => { const sortedItems = [...items].sort((0, _sorting.toStart)(name => name === 'c')); // prettier-ignore expect(sortedItems).toEqual(['c', 'a', '', 'b', 'a']); }); it('moves items to the end', () => { const sortedItems = [...items].sort((0, _sorting.toEnd)(name => name === 'c')); // prettier-ignore expect(sortedItems).toEqual(['a', '', 'b', 'a', 'c']); }); it('sort token infos', () => { const primaryTokenInfo = _tokenInfo.tokenInfoMocks.primaryETH; const secondaryTokenInfos = [_tokenInfo.tokenInfoMocks.ftNoTicker, _tokenInfo.tokenInfoMocks.ftNameless, _tokenInfo.tokenInfoMocks.nftCryptoKitty, _tokenInfo.tokenInfoMocks.rnftWhatever, primaryTokenInfo, { ..._tokenInfo.tokenInfoMocks.ftNoTicker, status: _types.Portfolio.Token.Status.Unknown }, { ..._tokenInfo.tokenInfoMocks.ftNoTicker, status: _types.Portfolio.Token.Status.Invalid }, { ..._tokenInfo.tokenInfoMocks.ftNoTicker, status: _types.Portfolio.Token.Status.Scam }]; const sortedTokenInfos = (0, _sorting.sortTokenInfos)({ primaryTokenInfo, secondaryTokenInfos }); expect(sortedTokenInfos).toEqual([primaryTokenInfo, _tokenInfo.tokenInfoMocks.nftCryptoKitty, _tokenInfo.tokenInfoMocks.rnftWhatever, _tokenInfo.tokenInfoMocks.ftNameless, _tokenInfo.tokenInfoMocks.ftNoTicker, { ..._tokenInfo.tokenInfoMocks.ftNoTicker, status: _types.Portfolio.Token.Status.Unknown }, { ..._tokenInfo.tokenInfoMocks.ftNoTicker, status: _types.Portfolio.Token.Status.Invalid }, { ..._tokenInfo.tokenInfoMocks.ftNoTicker, status: _types.Portfolio.Token.Status.Scam }]); }); it('sort token amounts by info', () => { const primaryTokenInfo = _tokenInfo.tokenInfoMocks.primaryETH; const amounts = [_tokenBalance.tokenBalanceMocks.ftNoTicker, _tokenBalance.tokenBalanceMocks.nftCryptoKitty, _tokenBalance.tokenBalanceMocks.ftNameless, _tokenBalance.tokenBalanceMocks.rnftWhatever, _tokenBalance.tokenBalanceMocks.primaryETH, { ..._tokenBalance.tokenBalanceMocks.ftNoTicker, info: { ..._tokenBalance.tokenBalanceMocks.ftNoTicker.info, status: _types.Portfolio.Token.Status.Unknown } }, { ..._tokenBalance.tokenBalanceMocks.ftNoTicker, info: { ..._tokenBalance.tokenBalanceMocks.ftNoTicker.info, status: _types.Portfolio.Token.Status.Invalid } }, { ..._tokenBalance.tokenBalanceMocks.ftNoTicker, info: { ..._tokenBalance.tokenBalanceMocks.ftNoTicker.info, status: _types.Portfolio.Token.Status.Scam } }]; const sortedTokenBalances = (0, _sorting.sortTokenAmountsByInfo)({ primaryTokenInfo, amounts }); const serialized = sortedTokenBalances.map(_common.storageSerializer); expect(serialized).toEqual([_tokenBalance.tokenBalanceMocks.primaryETH, _tokenBalance.tokenBalanceMocks.nftCryptoKitty, _tokenBalance.tokenBalanceMocks.rnftWhatever, _tokenBalance.tokenBalanceMocks.ftNameless, _tokenBalance.tokenBalanceMocks.ftNoTicker, { ..._tokenBalance.tokenBalanceMocks.ftNoTicker, info: { ..._tokenBalance.tokenBalanceMocks.ftNoTicker.info, status: _types.Portfolio.Token.Status.Unknown } }, { ..._tokenBalance.tokenBalanceMocks.ftNoTicker, info: { ..._tokenBalance.tokenBalanceMocks.ftNoTicker.info, status: _types.Portfolio.Token.Status.Invalid } }, { ..._tokenBalance.tokenBalanceMocks.ftNoTicker, info: { ..._tokenBalance.tokenBalanceMocks.ftNoTicker.info, status: _types.Portfolio.Token.Status.Scam } }].map(_common.storageSerializer)); }); }); // prettier-ignore const items = ['a', '', 'c', 'b', 'a']; //# sourceMappingURL=sorting.test.js.map