Skip to content

Commit

Permalink
test(blue-sdk): improve code
Browse files Browse the repository at this point in the history
  • Loading branch information
Rubilmax committed Sep 30, 2024
1 parent 51bbf14 commit 08956c5
Show file tree
Hide file tree
Showing 5 changed files with 88 additions and 29 deletions.
3 changes: 3 additions & 0 deletions packages/blue-sdk/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -22,10 +22,13 @@
"@nomicfoundation/hardhat-ethers": "^3.0.6",
"@nomicfoundation/hardhat-network-helpers": "^1.0.11",
"@types/chai": "^4.3.14",
"@types/chai-as-promised": "^7.1.2",
"@types/jest": "^29.5.12",
"@types/mocha": "^10.0.6",
"@types/node": "^22.1.0",
"chai": "^4.3.10",
"chai-as-promised": "^7.1.2",
"chai-ts": "^0.0.3",
"dotenv": "^16.4.5",
"ethers": "^6.13.2",
"ethers-types": "^3.17.0",
Expand Down
73 changes: 47 additions & 26 deletions packages/blue-sdk/test/Market.test.ts
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
import { expect } from "chai";
import {
AdaptiveCurveIrm__factory,
BlueOracle__factory,
Expand All @@ -13,9 +14,11 @@ import {
latest,
setNextBlockTimestamp,
} from "@nomicfoundation/hardhat-network-helpers/dist/src/helpers/time";
import { parseUnits } from "ethers";
import { ethers } from "hardhat";
import { deal } from "hardhat-deal";
import { ChainId, Market, MarketConfig, MathLib, addresses } from "../src";
import { ChainId, Market, addresses } from "../src";
import { MAINNET_MARKETS } from "../src/tests/mocks/markets";

describe("Market", () => {
let signer: SignerWithAddress;
Expand All @@ -28,22 +31,22 @@ describe("Market", () => {
const { morpho: morphoAddress } = addresses[ChainId.EthMainnet];
const morpho = MorphoBlue__factory.connect(morphoAddress, signer);

const config = new MarketConfig({
loanToken: "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48",
collateralToken: "0x7f39C581F595B53c5cb19bD0b3f8dA6c935E2Ca0",
oracle: "0x48F7E36EB6B826B2dF4B2E630B62Cd25e89E40e2",
irm: "0x870aC11D48B15DB9a138Cf899d20F13F79Ba00BC",
lltv: 86_0000000000000000n,
});
const config = MAINNET_MARKETS.usdc_wstEth;

const collateral = MathLib.WAD;
const collateral = parseUnits("1", 18);
await deal(config.collateralToken, signer, collateral);
await ERC20__factory.connect(config.collateralToken, signer).approve(
morphoAddress,
collateral,
);
await morpho.supplyCollateral(config, collateral, signer.address, "0x");
await morpho.borrow(config, 1_000000n, 0n, signer.address, signer.address);
await morpho.borrow(
config,
parseUnits("1", 6),
0n,
signer.address,
signer.address,
);

const {
totalSupplyAssets,
Expand Down Expand Up @@ -75,35 +78,47 @@ describe("Market", () => {

await setNextBlockTimestamp(timestamp);

const maxBorrowable = market.getMaxBorrowableAssets(position);

await expect(
morpho.borrow(
config,
maxBorrowable + 1n,
0n,
signer.address,
signer.address,
),
).to.be.rejectedWith("insufficient collateral");

await morpho.borrow(
config,
market.getMaxBorrowableAssets(position),
maxBorrowable,
0n,
signer.address,
signer.address,
);
});

it("should borrow borrowable assets in a galaxy far far away", async () => {
it("should borrow borrowable assets in an extreme future", async () => {
const { morpho: morphoAddress } = addresses[ChainId.EthMainnet];
const morpho = MorphoBlue__factory.connect(morphoAddress, signer);

const config = new MarketConfig({
loanToken: "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48",
collateralToken: "0x7f39C581F595B53c5cb19bD0b3f8dA6c935E2Ca0",
oracle: "0x48F7E36EB6B826B2dF4B2E630B62Cd25e89E40e2",
irm: "0x870aC11D48B15DB9a138Cf899d20F13F79Ba00BC",
lltv: 86_0000000000000000n,
});
const config = MAINNET_MARKETS.usdc_wstEth;

const collateral = MathLib.WAD * 10_000_000_000n;
const collateral = parseUnits("10000000000", 18);
await deal(config.collateralToken, signer, collateral);
await ERC20__factory.connect(config.collateralToken, signer).approve(
morphoAddress,
collateral,
);
await morpho.supplyCollateral(config, collateral, signer.address, "0x");
await morpho.borrow(config, 1_000000n, 0n, signer.address, signer.address);
await morpho.borrow(
config,
parseUnits("1", 6),
0n,
signer.address,
signer.address,
);

const {
totalSupplyAssets,
Expand Down Expand Up @@ -132,17 +147,23 @@ describe("Market", () => {
}).accrueInterest(timestamp);

const position = await morpho.position(config.id, signer.address);
const borrowable = market.getMaxBorrowableAssets(position);
const maxBorrowable = market.getMaxBorrowableAssets(position);

await deal(config.loanToken, signer, borrowable);
await deal(config.loanToken, signer, maxBorrowable);
await ERC20__factory.connect(config.loanToken, signer).approve(
morphoAddress,
borrowable,
maxBorrowable,
);
await morpho.supply(config, borrowable, 0n, signer.address, "0x");
await morpho.supply(config, maxBorrowable, 0n, signer.address, "0x");

await setNextBlockTimestamp(timestamp);

await morpho.borrow(config, borrowable, 0n, signer.address, signer.address);
await morpho.borrow(
config,
maxBorrowable,
0n,
signer.address,
signer.address,
);
});
});
3 changes: 3 additions & 0 deletions packages/morpho-test/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -16,12 +16,14 @@
"@nomicfoundation/hardhat-ethers": "^3.0.4",
"@nomicfoundation/hardhat-network-helpers": "^1.0.9",
"@types/chai": "^4.3.17",
"@types/chai-as-promised": "^7.1.2",
"@types/jest": "^29.5.12",
"@types/mocha": "^10.0.6",
"@types/node": "^22.1.0",
"@types/sinon": "^17.0.3",
"@types/sinon-chai": "^3.2.12",
"chai": "^4.5.0",
"chai-as-promised": "^7.1.2",
"dotenv": "^16.3.1",
"ethers": "^6.13.2",
"hardhat": "^2.20.1",
Expand All @@ -34,6 +36,7 @@
"@nomicfoundation/hardhat-ethers": "^3.0.0",
"@nomicfoundation/hardhat-network-helpers": "^1.0.0",
"chai": "^4.3.0",
"chai-as-promised": "^7.1.2",
"ethers": "^6.0.0",
"hardhat": "^2.20.0",
"sinon": "^19.0.2",
Expand Down
2 changes: 2 additions & 0 deletions packages/morpho-test/src/chai.ts
Original file line number Diff line number Diff line change
@@ -1,7 +1,9 @@
import chai, { Assertion } from "chai";
import chaiAsPromised from "chai-as-promised";
import sinonChai from "sinon-chai";

chai.use(sinonChai);
chai.use(chaiAsPromised);

// @ts-ignore
// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/BigInt#use_within_json
Expand Down
36 changes: 33 additions & 3 deletions yarn.lock
Original file line number Diff line number Diff line change
Expand Up @@ -3163,10 +3163,13 @@ __metadata:
"@nomicfoundation/hardhat-ethers": "npm:^3.0.6"
"@nomicfoundation/hardhat-network-helpers": "npm:^1.0.11"
"@types/chai": "npm:^4.3.14"
"@types/chai-as-promised": "npm:^7.1.2"
"@types/jest": "npm:^29.5.12"
"@types/mocha": "npm:^10.0.6"
"@types/node": "npm:^22.1.0"
chai: "npm:^4.3.10"
chai-as-promised: "npm:^7.1.2"
chai-ts: "npm:^0.0.3"
dotenv: "npm:^16.4.5"
ethers: "npm:^6.13.2"
ethers-types: "npm:^3.17.0"
Expand All @@ -3191,12 +3194,14 @@ __metadata:
"@nomicfoundation/hardhat-ethers": "npm:^3.0.4"
"@nomicfoundation/hardhat-network-helpers": "npm:^1.0.9"
"@types/chai": "npm:^4.3.17"
"@types/chai-as-promised": "npm:^7.1.2"
"@types/jest": "npm:^29.5.12"
"@types/mocha": "npm:^10.0.6"
"@types/node": "npm:^22.1.0"
"@types/sinon": "npm:^17.0.3"
"@types/sinon-chai": "npm:^3.2.12"
chai: "npm:^4.5.0"
chai-as-promised: "npm:^7.1.2"
dotenv: "npm:^16.3.1"
ethers: "npm:^6.13.2"
hardhat: "npm:^2.20.1"
Expand All @@ -3208,6 +3213,7 @@ __metadata:
"@nomicfoundation/hardhat-ethers": ^3.0.0
"@nomicfoundation/hardhat-network-helpers": ^1.0.0
chai: ^4.3.0
chai-as-promised: ^7.1.2
ethers: ^6.0.0
hardhat: ^2.20.0
sinon: ^19.0.2
Expand Down Expand Up @@ -4574,7 +4580,7 @@ __metadata:
languageName: node
linkType: hard

"@types/chai-as-promised@npm:^7.1.3":
"@types/chai-as-promised@npm:^7.1.2, @types/chai-as-promised@npm:^7.1.3, @types/chai-as-promised@npm:^7.1.5":
version: 7.1.8
resolution: "@types/chai-as-promised@npm:7.1.8"
dependencies:
Expand All @@ -4597,6 +4603,13 @@ __metadata:
languageName: node
linkType: hard

"@types/chai@npm:^4.3.4":
version: 4.3.20
resolution: "@types/chai@npm:4.3.20"
checksum: 10c0/4601189d611752e65018f1ecadac82e94eed29f348e1d5430e5681a60b01e1ecf855d9bcc74ae43b07394751f184f6970fac2b5561fc57a1f36e93a0f5ffb6e8
languageName: node
linkType: hard

"@types/debug@npm:^4.1.9":
version: 4.1.12
resolution: "@types/debug@npm:4.1.12"
Expand Down Expand Up @@ -5730,7 +5743,7 @@ __metadata:
languageName: node
linkType: hard

"chai-as-promised@npm:^7.1.1":
"chai-as-promised@npm:^7.1.1, chai-as-promised@npm:^7.1.2":
version: 7.1.2
resolution: "chai-as-promised@npm:7.1.2"
dependencies:
Expand All @@ -5741,6 +5754,23 @@ __metadata:
languageName: node
linkType: hard

"chai-ts@npm:^0.0.3":
version: 0.0.3
resolution: "chai-ts@npm:0.0.3"
dependencies:
"@types/chai": "npm:^4.3.4"
"@types/chai-as-promised": "npm:^7.1.5"
chai: "npm:^4.3.7"
chai-as-promised: "npm:^7.1.1"
dependenciesMeta:
"@types/chai-as-promised":
optional: true
chai-as-promised:
optional: true
checksum: 10c0/b28fd3aa74dc9bc84a2916688de6914adbd0217afd2fea42c5a0fad060e605390e115476b29a22ff84de9ffe30f12192b4cef64d0e77ba60a8abe5938ed54ca2
languageName: node
linkType: hard

"chai@npm:^4.3.10":
version: 4.4.1
resolution: "chai@npm:4.4.1"
Expand All @@ -5756,7 +5786,7 @@ __metadata:
languageName: node
linkType: hard

"chai@npm:^4.5.0":
"chai@npm:^4.3.7, chai@npm:^4.5.0":
version: 4.5.0
resolution: "chai@npm:4.5.0"
dependencies:
Expand Down

0 comments on commit 08956c5

Please sign in to comment.