UNPKG

solana-token-list

Version:

Homebrew Solana Token Registry with Coingecko data

58 lines 6.3 kB
import fs from 'fs'; import test from 'ava'; import { CLUSTER_SLUGS, ENV, Strategy, TokenListProvider } from '.'; test('Token list is filterable by a tag', async (t) => { const list = (await new TokenListProvider().resolve(Strategy.Static)) .filterByChainId(ENV.MainnetBeta) .filterByTag('nft') .getList(); t.false(list.some((item) => item.symbol === 'SOL')); }); test('Token list can exclude by a tag', async (t) => { const list = (await new TokenListProvider().resolve(Strategy.Static)) .filterByChainId(ENV.MainnetBeta) .excludeByTag('nft') .getList(); // @ts-ignore t.false(list.some((item) => item.tags === ['nft'])); }); test('Token list can exclude by a chain', async (t) => { const list = (await new TokenListProvider().resolve(Strategy.Static)) .excludeByChainId(ENV.MainnetBeta) .getList(); t.false(list.some((item) => item.chainId === ENV.MainnetBeta)); }); test('Token list returns new object upon filter', async (t) => { const list = await new TokenListProvider().resolve(Strategy.Static); const filtered = list.filterByChainId(ENV.MainnetBeta); t.true(list !== filtered); t.true(list.getList().length !== filtered.getList().length); }); test('Token list throws error when calling filterByClusterSlug with slug that does not exist', async (t) => { const list = await new TokenListProvider().resolve(Strategy.Static); const error = await t.throwsAsync(async () => list.filterByClusterSlug('whoop'), { instanceOf: Error }); t.is(error?.message, `Unknown slug: whoop, please use one of ${Object.keys(CLUSTER_SLUGS)}`); }); test('Token list is a valid json', async (t) => { t.notThrows(() => { const content = fs .readFileSync('./src/tokens/solana.tokenlist.json') .toString(); JSON.parse(content.toString()); }); }); test('Token list does not have duplicate entries', async (t) => { const list = await new TokenListProvider().resolve(Strategy.Static); list .filterByChainId(ENV.MainnetBeta) .getList() .reduce((agg, item) => { if (agg.has(item.address)) { console.log(item.address); } t.false(agg.has(item.address)); agg.set(item.address, item); return agg; }, new Map()); }); //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9rZW5saXN0LnNwZWMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbGliL3Rva2VubGlzdC5zcGVjLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxNQUFNLElBQUksQ0FBQztBQUVwQixPQUFPLElBQUksTUFBTSxLQUFLLENBQUM7QUFFdkIsT0FBTyxFQUFFLGFBQWEsRUFBRSxHQUFHLEVBQUUsUUFBUSxFQUFFLGlCQUFpQixFQUFhLE1BQU0sR0FBRyxDQUFDO0FBRS9FLElBQUksQ0FBQyxtQ0FBbUMsRUFBRSxLQUFLLEVBQUUsQ0FBQyxFQUFFLEVBQUU7SUFDcEQsTUFBTSxJQUFJLEdBQUcsQ0FBQyxNQUFNLElBQUksaUJBQWlCLEVBQUUsQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1NBQ2xFLGVBQWUsQ0FBQyxHQUFHLENBQUMsV0FBVyxDQUFDO1NBQ2hDLFdBQVcsQ0FBQyxLQUFLLENBQUM7U0FDbEIsT0FBTyxFQUFFLENBQUM7SUFFYixDQUFDLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxNQUFNLEtBQUssS0FBSyxDQUFDLENBQUMsQ0FBQztBQUN0RCxDQUFDLENBQUMsQ0FBQztBQUVILElBQUksQ0FBQyxpQ0FBaUMsRUFBRSxLQUFLLEVBQUUsQ0FBQyxFQUFFLEVBQUU7SUFDbEQsTUFBTSxJQUFJLEdBQUcsQ0FBQyxNQUFNLElBQUksaUJBQWlCLEVBQUUsQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFDO1NBQ2xFLGVBQWUsQ0FBQyxHQUFHLENBQUMsV0FBVyxDQUFDO1NBQ2hDLFlBQVksQ0FBQyxLQUFLLENBQUM7U0FDbkIsT0FBTyxFQUFFLENBQUM7SUFFYixhQUFhO0lBQ2IsQ0FBQyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMs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