Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
96 changes: 96 additions & 0 deletions test/allocators/AaveAllocator.test.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,96 @@
import { SignerWithAddress } from "@nomiclabs/hardhat-ethers/dist/src/signer-with-address";
import chai, { expect } from "chai";
import { ethers } from "hardhat";
const { BigNumber } = ethers;
import { FakeContract, smock } from "@defi-wonderland/smock";
import {
IERC20,
IERC20Metadata,
ITreasury,
IStabilityPool,
ILQTYStaking,
ISwapRouter,
LUSDAllocator,
AaveAllocator,
AaveAllocator__factory,
LUSDAllocator__factory,
OlympusAuthority,
OlympusAuthority__factory,
} from "../../types";
const { fork_network, fork_reset } = require("../utils/network_fork");
const impersonateAccount = require("../utils/impersonate_account");
const { advanceBlock, duration, increase } = require("../utils/advancement");

chai.use(smock.matchers);

describe("AaveAllocator", () => {
describe("unit tests", () => {
let owner: SignerWithAddress;
let governor: SignerWithAddress;
let guardian: SignerWithAddress;
let other: SignerWithAddress;
let alice: SignerWithAddress;
let bob: SignerWithAddress;
let treasuryFake: FakeContract<ITreasury>;
let stabilityPoolFake: FakeContract<IStabilityPool>;
let daiTokenFake: FakeContract<IERC20>;
let adaiTokenFake: FakeContract<IERC20>;
let aaveAllocator: AaveAllocator;
let authority: OlympusAuthority;

beforeEach(async () => {
[owner, governor, guardian, other, alice, bob] = await ethers.getSigners();
treasuryFake = await smock.fake<ITreasury>("ITreasury");
stabilityPoolFake = await smock.fake<IStabilityPool>("IStabilityPool");
daiTokenFake = await smock.fake<IERC20>("contracts/interfaces/IERC20.sol:IERC20");
adaiTokenFake = await smock.fake<IERC20>("contracts/interfaces/IERC20.sol:IERC20");
authority = await new OlympusAuthority__factory(owner).deploy(
governor.address,
guardian.address,
owner.address,
owner.address
);
});
describe("constructor", () => {
it("can construct", async () => {
aaveAllocator = await new AaveAllocator__factory(owner).deploy(
authority.address,
);
expect(await aaveAllocator.referralCode()).to.equal(0);
await aaveAllocator.addToken(daiTokenFake.address, adaiTokenFake.address, 100)
});
});

describe("post-constructor", () => {
beforeEach(async () => {
aaveAllocator = await new AaveAllocator__factory(owner).deploy(
authority.address,
);
});

describe("setter tests", () => {
it("invalid setReferralCode", async () => {
try {
await expect(aaveAllocator.connect(owner).setReferralCode(-1))
.to.be.revertedWith("value out-of-bounds (argument=\"code\", value=-1, code=INVALID_ARGUMENT, version=abi/5.5.0)");
} catch (error) {
console.log(error)
}
});
Comment on lines +72 to +79
Copy link
Copy Markdown
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

forgive my ignorance (I'm solidity noob), how can I expect an exception to be thrown in unittest?

In python, I can do this to assert an exception get raised in unittest:

def test_passes():
    with pytest.raises(Exception) as e_info:
        x = 1 / 0

Already googled around but didn't found useful hardhat doc

it("valid setReferralCode", async () => {
await aaveAllocator.connect(owner).setReferralCode(65535);
await aaveAllocator.connect(owner).setReferralCode(0);
});
});
});
// WIP
// describe("deposit", () => {
// it("not guardian", async () => {
// await expect(aaveAllocator.connect(owner).deposit(daiTokenFake.address, 1)).to.be.revertedWith(
// "UNAUTHORIZED"
// );
// });
// });

});
});