@mycrypto/unlock-scan
Version:
An efficient Unlock Protocol scanner
53 lines (44 loc) • 2.16 kB
text/typescript
import { waffle, ethers } from 'hardhat';
import UnlockScannerArtifact from '../artifacts/contracts/UnlockScanner.sol/UnlockScanner.json';
import { UNLOCK_CONTRACT_ABI } from './constants';
import { UnlockScanner } from './contracts';
import { getUnlockTimestamps } from './unlock-scan';
const { deployContract, deployMockContract, provider } = waffle;
jest.setTimeout(50000);
describe('getUnlockTimestamps', () => {
it('gets the expiry timestamps for multiple contracts', async () => {
const contract = (await deployContract(
provider.getWallets()[0],
UnlockScannerArtifact
)) as UnlockScanner;
const unlockContractA = await deployMockContract(provider.getWallets()[0], UNLOCK_CONTRACT_ABI);
const unlockContractB = await deployMockContract(provider.getWallets()[0], UNLOCK_CONTRACT_ABI);
const addresses = await Promise.all(
provider.getWallets().map(wallet => wallet.getAddress())
).then(wallets => wallets.slice(0, 3));
await unlockContractA.mock.keyExpirationTimestampFor.withArgs(addresses[0]).returns('12345');
await unlockContractA.mock.keyExpirationTimestampFor.withArgs(addresses[1]).returns('54321');
await unlockContractA.mock.keyExpirationTimestampFor.withArgs(addresses[2]).returns('10000');
await unlockContractB.mock.keyExpirationTimestampFor.withArgs(addresses[0]).returns('54321');
await unlockContractB.mock.keyExpirationTimestampFor.withArgs(addresses[1]).returns('12345');
await unlockContractB.mock.keyExpirationTimestampFor.withArgs(addresses[2]).returns('10101');
const timestamps = await getUnlockTimestamps(ethers.provider, addresses, {
contractAddress: contract.address,
contracts: [unlockContractA.address, unlockContractB.address]
});
expect(timestamps).toEqual({
[]]: {
[]: 12345n,
[]: 54321n
},
[]]: {
[]: 54321n,
[]: 12345n
},
[]]: {
[]: 10000n,
[]: 10101n
}
});
});
});