@defi-wonderland/keep3r-v2
Version:
The Keep3r Network is a decentralized network for projects that need external devops, and for external teams to find keeper jobs
64 lines (49 loc) • 2.15 kB
text/typescript
import { SignerWithAddress } from '@nomiclabs/hardhat-ethers/signers';
import { UniV3PairManager, UniV3PairManagerFactory, UniV3PairManagerFactory__factory } from '@types';
import { evm } from '@utils';
import { snapshot } from '@utils/evm';
import { expect } from 'chai';
import { ethers } from 'hardhat';
import * as common from './common';
describe('UniV3PairManagerFactory', () => {
//factories
let uniV3PairManagerFactory: UniV3PairManagerFactory__factory;
//contracts
let uniPairFactory: UniV3PairManagerFactory;
let createdManager: UniV3PairManager;
//signers
let governance: SignerWithAddress;
//misc
let snapshotId: string;
before(async () => {
await evm.reset({
jsonRpcUrl: process.env.MAINNET_HTTPS_URL,
blockNumber: common.FORK_BLOCK_NUMBER,
});
[, governance] = await ethers.getSigners();
uniV3PairManagerFactory = (await ethers.getContractFactory('UniV3PairManagerFactory')) as UniV3PairManagerFactory__factory;
uniPairFactory = await uniV3PairManagerFactory.deploy(governance.address);
snapshotId = await snapshot.take();
});
beforeEach(async () => {
await snapshot.revert(snapshotId);
});
describe('createPairManager', () => {
let createdManagerAddress: string;
beforeEach(async () => {
await uniPairFactory.createPairManager(common.KP3R_WETH_V3_POOL_ADDRESS);
createdManagerAddress = await uniPairFactory.callStatic.pairManagers(common.KP3R_WETH_V3_POOL_ADDRESS);
createdManager = (await ethers.getContractAt('IUniV3PairManager', createdManagerAddress)) as UniV3PairManager;
});
it('should match the expected address of deployment', async () => {
const expectedAddress = ethers.utils.getContractAddress({
from: uniPairFactory.address,
nonce: (await ethers.provider.getTransactionCount(uniPairFactory.address)) - 1,
});
expect(createdManagerAddress).to.eq(expectedAddress);
});
it('should set the governance of the created pair manager to the owner of the factory', async () => {
expect(await createdManager.governance()).to.equal(governance.address);
});
});
});