@api3/contracts
Version:
Contracts through which API3 services are delivered
101 lines • 4.14 kB
JavaScript
;
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