1
0
forked from mico/idle_moloch
idle_moloch/lib/swap-router-contracts/test/MulticallExtended.spec.ts

51 lines
1.7 KiB
TypeScript

import { constants } from 'ethers'
import { ethers } from 'hardhat'
import { TestMulticallExtended } from '../typechain/TestMulticallExtended'
import { expect } from './shared/expect'
describe('MulticallExtended', async () => {
let multicall: TestMulticallExtended
beforeEach('create multicall', async () => {
const multicallTestFactory = await ethers.getContractFactory('TestMulticallExtended')
multicall = (await multicallTestFactory.deploy()) as TestMulticallExtended
})
it('fails deadline check', async () => {
await multicall.setTime(1)
await expect(
multicall['multicall(uint256,bytes[])'](0, [
multicall.interface.encodeFunctionData('functionThatReturnsTuple', ['1', '2']),
])
).to.be.revertedWith('Transaction too old')
})
it('passes deadline check', async () => {
const [data] = await multicall.callStatic['multicall(uint256,bytes[])'](0, [
multicall.interface.encodeFunctionData('functionThatReturnsTuple', ['1', '2']),
])
const {
tuple: { a, b },
} = multicall.interface.decodeFunctionResult('functionThatReturnsTuple', data)
expect(b).to.eq(1)
expect(a).to.eq(2)
})
it('fails previousBlockhash check', async () => {
await expect(
multicall['multicall(bytes32,bytes[])'](constants.HashZero, [
multicall.interface.encodeFunctionData('functionThatReturnsTuple', ['1', '2']),
])
).to.be.revertedWith('Blockhash')
})
it('passes previousBlockhash check', async () => {
const block = await ethers.provider.getBlock('latest')
await expect(
multicall['multicall(bytes32,bytes[])'](block.hash, [
multicall.interface.encodeFunctionData('functionThatReturnsTuple', ['1', '2']),
])
).to.not.be.reverted
})
})