@phiresky/eth-scan
Version:
An efficient Ether and token balance scanner
3 lines • 1.85 kB
JavaScript
import{CONTRACT_ADDRESS}from"../constants";import EIP1193Provider from"./eip-1193";import EthersProvider from"./ethers";import HttpProvider from"./http";import{send,call}from"./provider";import Web3Provider from"./web3";jest.mock("./eip-1193",()=>({isProvider:jest.fn(),send:jest.fn().mockImplementation(async()=>"0x00")})),jest.mock("./ethers",()=>({isProvider:jest.fn(),send:jest.fn().mockImplementation(async()=>"0x00")})),jest.mock("./http",()=>({isProvider:jest.fn(),send:jest.fn().mockImplementation(async()=>"0x00")})),jest.mock("./web3",()=>({isProvider:jest.fn(),send:jest.fn().mockImplementation(async()=>"0x00")})),describe("send",()=>{it("calls the correct provider",async()=>{EIP1193Provider.isProvider.mockImplementationOnce(()=>!0),await send("foo","eth_call",[{to:CONTRACT_ADDRESS,data:"0x"}]),EthersProvider.isProvider.mockImplementationOnce(()=>!0),await send("foo","eth_call",[{to:CONTRACT_ADDRESS,data:"0x"}]),HttpProvider.isProvider.mockImplementationOnce(()=>!0),await send("foo","eth_call",[{to:CONTRACT_ADDRESS,data:"0x"}]),Web3Provider.isProvider.mockImplementationOnce(()=>!0),await send("foo","eth_call",[{to:CONTRACT_ADDRESS,data:"0x"}]),expect(EIP1193Provider.send).toHaveBeenCalledTimes(1),expect(EthersProvider.send).toHaveBeenCalledTimes(1),expect(HttpProvider.send).toHaveBeenCalledTimes(1),expect(Web3Provider.send).toHaveBeenCalledTimes(1)}),it("throws for invalid providers",async()=>{// @ts-expect-error Invalid provider type
await expect(()=>send({},CONTRACT_ADDRESS,"0x")).rejects.toThrow("Invalid provider type")})}),describe("call",()=>{it("throws if a call reverts",async()=>{EthersProvider.isProvider.mockImplementationOnce(()=>!0),EthersProvider.send.mockImplementationOnce(async()=>"08c379a"),await expect(call("foo",CONTRACT_ADDRESS,"0x")).rejects.toThrow()})});
//# sourceMappingURL=provider.test.js.map