@brave/spl-token-registry
Version:
Solana Token Registry
57 lines • 6.28 kB
JavaScript
import fs from 'fs';
import test from 'ava';
import { CLUSTER_SLUGS, ENV, Strategy, TokenListProvider, } from './tokenlist';
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();
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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidG9rZW5saXN0LnNwZWMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi9zcmMvbGliL3Rva2VubGlzdC5zcGVjLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxNQUFNLElBQUksQ0FBQztBQUVwQixPQUFPLElBQUksTUFBTSxLQUFLLENBQUM7QUFFdkIsT0FBTyxFQUNMLGFBQWEsRUFDYixHQUFHLEVBQ0gsUUFBUSxFQUVSLGlCQUFpQixHQUNsQixNQUFNLGFBQWEsQ0FBQztBQUVyQixJQUFJLENBQUMsbUNBQW1DLEVBQUUsS0FBSyxFQUFFLENBQUMsRUFBRSxFQUFFO0lBQ3BELE1BQU0sSUFBSSxHQUFHLENBQUMsTUFBTSxJQUFJLGlCQUFpQixFQUFFLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQztTQUNsRSxlQUFlLENBQUMsR0FBRyxDQUFDLFdBQVcsQ0FBQztTQUNoQyxXQUFXLENBQUMsS0FBSyxDQUFDO1NBQ2xCLE9BQU8sRUFBRSxDQUFDO0lBRWIsQ0FBQyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsTUFBTSxLQUFLLEtBQUssQ0FBQyxDQUFDLENBQUM7QUFDdEQsQ0FBQyxDQUFDLENBQUM7QUFFSCxJQUFJLENBQUMsaUNBQWlDLEVBQUUsS0FBSyxFQUFFLENBQUMsRUFBRSxFQUFFO0lBQ2xELE1BQU0sSUFBSSxHQUFHLENBQUMsTUFBTSxJQUFJLGlCQUFpQixFQUFFLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQztTQUNsRSxlQUFlLENBQUMsR0FBRyxDQUFDLFdBQVcsQ0FBQztTQUNoQyxZQUFZLENBQUMsS0FBSyxDQUFDO1NBQ25CLE9BQU8sRUFBRSxDQUFDO0lBRWIsQ0FBQyxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsSUFBSSxLQUFLLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDO0FBQ3RELENBQUMsQ0FBQyxDQUFDO0FBRUgsSUFBSSxDQUFDLG1DQUFtQyxFQUFFLEtBQUssRUFBRSxDQUFDLEVBQUUsRUFBRTtJQUNwRCxNQUFNLElBQUksR0FBRyxDQUFDLE1BQU0sSUFBSSxpQkFBaUIsRUFBRSxDQUFDLE9BQU8sQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDLENBQUM7U0FDbEUsZ0JBQWdCLENBQUMsR0FBRyxDQUFDLFdBQVcsQ0FBQztTQUNqQyxPQUFPLEVBQUUsQ0FBQztJQUViLENBQUMsQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLE9BQU8sS0FBSyxHQUFHLENBQUMsV0FBVyxDQUFDLENBQUMsQ0FBQztBQUNqRSxDQUFDLENBQUMsQ0FBQztBQUVILElBQUksQ0FBQywyQ0FBMkMsRUFBRSxLQUFLLEVBQUUsQ0FBQyxFQUFFLEVBQUU7SUFDNUQsTUFBTSxJQUFJLEdBQUcsTUFBTSxJQUFJLGlCQUFpQixFQUFFLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUNwRSxNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsZUFBZSxDQUFDLEdBQUcsQ0FBQyxXQUFXLENBQUMsQ0FBQztJQUN2RCxDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksS0FBSyxRQUFRLENBQUMsQ0FBQztJQUMxQixDQUFDLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsQ0FBQyxNQUFNLEtBQUssUUFBUSxDQUFDLE9BQU8sRUFBRSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0FBQzlELENBQUMsQ0FBQyxDQUFDO0FBRUgsSUFBSSxDQUFDLHdGQUF3RixFQUFFLEtBQUssRUFBRSxDQUFDLEVBQUUsRUFBRTtJQUN6RyxNQUFNLElBQUksR0FBRyxNQUFNLElBQUksaUJBQWlCLEVBQUUsQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ3BFLE1BQU0sS0FBSyxHQUFHLE1BQU0sQ0FBQyxDQUFDLFdBQVcsQ0FDL0IsS0FBSyxJQUFJLEVBQUUsQ0FBQyxJQUFJLENBQUMsbUJBQW1CLENBQUMsT0FBTyxDQUFDLEVBQzdDLEVBQUUsVUFBVSxFQUFFLEtBQUssRUFBRSxDQUN0QixDQUFDO0lBQ0YsQ0FBQyxDQUFDLEVBQUUsQ0FDRixLQUFLLENBQUMsT0FBTyxFQUNiLDBDQUEwQyxNQUFNLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxFQUFFLENBQ3ZFLENBQUM7QUFDSixDQUFDLENBQUMsQ0FBQztBQUVILElBQUksQ0FBQyw0QkFBNEIsRUFBRSxLQUFLLEVBQUUsQ0FBQyxFQUFFLEVBQUU7SUFDN0MsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxHQUFHLEVBQUU7UUFDZixNQUFNLE9BQU8sR0FBRyxFQUFFO2FBQ2YsWUFBWSxDQUFDLG9DQUFvQyxDQUFDO2FBQ2xELFFBQVEsRUFBRSxDQUFDO1FBQ2QsSUFBSSxDQUFDLEtBQUssQ0FBQyxPQUFPLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQztJQUNqQyxDQUFDLENBQUMsQ0FBQztBQUNMLENBQUMsQ0FBQyxDQUFDO0FBRUgsSUFBSSxDQUFDLDRDQUE0QyxFQUFFLEtBQUssRUFBRSxDQUFDLEVBQUUsRUFBRTtJQUM3RCxNQUFNLElBQUksR0FBRyxNQUFNLElBQUksaUJBQWlCLEVBQUUsQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLE1BQU0sQ0FBQyxDQUFDO0lBQ3BFLElBQUk7U0FDRCxlQUFlLENBQUMsR0FBRyxDQUFDLFdBQVcsQ0FBQztTQUNoQyxPQUFPLEVBQUU7U0FDVCxNQUFNLENBQUMsQ0FBQyxHQUFHLEVBQUUsSUFBSSxFQUFFLEVBQUU7UUFDcEIsSUFBSSxHQUFHLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsRUFBRTtZQUN6QixPQUFPLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsQ0FBQztTQUMzQjtRQUVELENBQUMsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQztRQUMvQixHQUFHLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxPQUFPLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFDNUIsT0FBTyxHQUFHLENBQUM7SUFDYixDQUFDLEVBQUUsSUFBSSxHQUFHLEVBQXFCLENBQUMsQ0FBQztBQUNyQyxDQUFDLENBQUMsQ0FBQyJ9