UNPKG

@api3/contracts

Version:

Contracts through which API3 services are delivered

101 lines 4.14 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); const chains_1 = require("./generated/chains"); const strings_1 = require("./utils/strings"); const viem_config_1 = require("./viem-config"); function getRandomChain() { return chains_1.CHAINS[Math.floor(Math.random() * chains_1.CHAINS.length)]; } const OLD_ENV = process.env; beforeEach(() => { jest.resetModules(); // Most important - it clears the cache process.env = { ...OLD_ENV }; // Make a copy }); afterAll(() => { process.env = OLD_ENV; // Restore old environment }); describe(viem_config_1.chainHttpRpcUrlName.name, () => { it('returns the expected HTTP RPC URL name', () => { const randomChain = getRandomChain(); const expected = `API3_CHAINS_HTTP_RPC_URL_${(0, strings_1.toUpperSnakeCase)(randomChain.alias)}`; expect((0, viem_config_1.chainHttpRpcUrlName)(randomChain)).toStrictEqual(expected); }); }); describe(viem_config_1.chains.name, () => { it('returns the list of all chains compatible with Viem', () => { const result = (0, viem_config_1.chains)(); expect(result).toHaveLength(chains_1.CHAINS.length); chains_1.CHAINS.forEach((chain) => { const defaultProvider = chain.providers.find((p) => p.alias === 'default'); const currencyName = chain.testnet ? `Testnet ${chain.symbol}` : chain.symbol; const res = result.find((r) => r.id.toString() === chain.id); expect(res).toStrictEqual({ fees: undefined, formatters: undefined, id: Number(chain.id), name: chain.alias, network: chain.alias, nativeCurrency: { name: currencyName, symbol: chain.symbol, decimals: chain.decimals, }, rpcUrls: { default: { http: [defaultProvider.rpcUrl] }, public: { http: [defaultProvider.rpcUrl] }, environment: { http: [] }, }, blockExplorers: { default: { name: 'Explorer', url: chain.explorer.browserUrl, }, }, serializers: undefined, }); }); }); it('allows for setting additional RPC URL values with env variables', () => { chains_1.CHAINS.forEach((chain) => { const alias = (0, strings_1.toUpperSnakeCase)(chain.alias); process.env[`API3_CHAINS_HTTP_RPC_URL_${alias}`] = `https://${chain.id}.xyz`; }); const result = (0, viem_config_1.chains)(); chains_1.CHAINS.forEach((chain) => { const defaultProvider = chain.providers.find((p) => p.alias === 'default'); const currencyName = chain.testnet ? `Testnet ${chain.symbol}` : chain.symbol; const res = result.find((r) => r.id.toString() === chain.id); expect(res).toStrictEqual({ fees: undefined, formatters: undefined, id: Number(chain.id), name: chain.alias, network: chain.alias, nativeCurrency: { name: currencyName, symbol: chain.symbol, decimals: chain.decimals, }, rpcUrls: { default: { http: [defaultProvider.rpcUrl], }, public: { http: [defaultProvider.rpcUrl], }, environment: { http: [`https://${chain.id}.xyz`], }, }, blockExplorers: { default: { name: 'Explorer', url: chain.explorer.browserUrl, }, }, serializers: undefined, }); }); }); }); //# sourceMappingURL=viem-config.test.js.map