@yoroi/portfolio
Version:
The Portfolio package of Yoroi SDK
101 lines (99 loc) • 4.35 kB
JavaScript
;
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