From 4df8b8bf56789de4150709214e5af15d875be7e7 Mon Sep 17 00:00:00 2001 From: Edward Mulraney Date: Wed, 23 Jun 2021 16:57:24 +0100 Subject: [PATCH] use object spec for tests --- test/liquity.js | 126 +++++++++++++++++++++++++++++++++--------------- 1 file changed, 88 insertions(+), 38 deletions(-) diff --git a/test/liquity.js b/test/liquity.js index 69dee3a..59efbcc 100644 --- a/test/liquity.js +++ b/test/liquity.js @@ -1,5 +1,6 @@ const { expect } = require("chai"); const hardhatConfig = require("../hardhat.config"); + const { BigNumber } = hre.ethers; // Deterministic block number to run these tests from on forked mainnet. If you change this, tests will break. @@ -13,28 +14,37 @@ const PRICE_FEED_ADDRESS = "0x4c517D4e2C851CA76d7eC94B805269Df0f2201De"; const PRICE_FEED_ABI = ["function fetchPrice() external returns (uint)"]; /* Begin: Mock test data (based on specified BLOCK_NUMBER and JUSTIN_SUN_ADDRESS) */ -const expectedTrovePosition = [ - /* collateral */ BigNumber.from("582880000000000000000000"), - /* debt */ BigNumber.from("372000200000000000000000000"), - /* icr */ BigNumber.from("3859882210893925325"), -]; -const expectedStabilityPosition = [ - /* deposit */ BigNumber.from("299979329615565997640451998"), - /* ethGain */ BigNumber.from("8629038660000000000"), - /* lqtyGain */ BigNumber.from("53244322633874479119945"), -]; -const expectedStakePosition = [ - /* amount */ BigNumber.from("981562996504090969804965"), - /* ethGain */ BigNumber.from("18910541408996344243"), - /* lusdGain */ BigNumber.from("66201062534511228032281"), -]; - -const expectedSystemState = [ - /* borrowFee */ BigNumber.from("6900285109012952"), - /* ethTvl */ BigNumber.from("852500462432421494350957"), - /* tcr */ BigNumber.from("3250195441371082828"), - /* isInRecoveryMode */ false, -]; +const expectedTrovePosition = { + collateral: BigNumber.from("582880000000000000000000"), + debt: BigNumber.from("372000200000000000000000000"), + icr: BigNumber.from("3859882210893925325"), +}; +const expectedStabilityPosition = { + deposit: BigNumber.from("299979329615565997640451998"), + ethGain: BigNumber.from("8629038660000000000"), + lqtyGain: BigNumber.from("53244322633874479119945"), +}; +const expectedStakePosition = { + amount: BigNumber.from("981562996504090969804965"), + ethGain: BigNumber.from("18910541408996344243"), + lusdGain: BigNumber.from("66201062534511228032281"), +}; +const expectedSystemState = { + borrowFee: BigNumber.from("6900285109012952"), + ethTvl: BigNumber.from("852500462432421494350957"), + tcr: BigNumber.from("3250195441371082828"), + isInRecoveryMode: false, +}; +const expectedTrovePositionHints = { + upperHint: "0xbf9a4eCC4151f28C03100bA2C0555a3D3e439e69", + lowerHint: "0xa4FC81A7AB93360543eb1e814D0127f466012CED", +}; +const expectedRedemptionPositionHints = { + partialRedemptionHintNicr: "69529933762909647", + firstHint: "0xc16aDd8bA17ab81B27e930Da8a67848120565d8c", + upperHint: "0x66882C005188F0F4d95825ED7A7F78ed3055f167", + lowerHint: "0x0C22C11a8ed4C23ffD19629283548B1692b58e92", +}; /* End: Mock test data */ describe("InstaLiquityResolver", () => { @@ -55,6 +65,7 @@ describe("InstaLiquityResolver", () => { ); liquity = await liquityFactory.deploy(); + await liquity.deployed(); }); @@ -69,7 +80,11 @@ describe("InstaLiquityResolver", () => { JUSTIN_SUN_ADDRESS, oracleEthPrice ); - expect(trovePosition).to.eql(expectedTrovePosition); + expect(trovePosition.collateral).to.equal( + expectedTrovePosition.collateral + ); + expect(trovePosition.debt).to.equal(expectedTrovePosition.debt); + expect(trovePosition.icr).to.equal(expectedTrovePosition.icr); }); }); @@ -78,14 +93,24 @@ describe("InstaLiquityResolver", () => { const stabilityPosition = await liquity.getStabilityDeposit( JUSTIN_SUN_ADDRESS ); - expect(stabilityPosition).to.eql(expectedStabilityPosition); + expect(stabilityPosition.deposit).to.equal( + expectedStabilityPosition.deposit + ); + expect(stabilityPosition.ethGain).to.equal( + expectedStabilityPosition.ethGain + ); + expect(stabilityPosition.lqtyGain).to.equal( + expectedStabilityPosition.lqtyGain + ); }); }); describe("getStake()", () => { it("returns a user's Stake position", async () => { const stakePosition = await liquity.getStake(JUSTIN_SUN_ADDRESS); - expect(stakePosition).to.eql(expectedStakePosition); + expect(stakePosition.amount).to.equal(expectedStakePosition.amount); + expect(stakePosition.ethGain).to.equal(expectedStakePosition.ethGain); + expect(stakePosition.lusdGain).to.equal(expectedStakePosition.lusdGain); }); }); @@ -96,12 +121,30 @@ describe("InstaLiquityResolver", () => { JUSTIN_SUN_ADDRESS, oracleEthPrice ); - const expectedPosition = [ - expectedTrovePosition, - expectedStabilityPosition, - expectedStakePosition, - ]; - expect(position).to.eql(expectedPosition); + const expectedPosition = { + trove: expectedTrovePosition, + stability: expectedStabilityPosition, + stake: expectedStakePosition, + }; + expect(position.trove.collateral).to.equal( + expectedPosition.trove.collateral + ); + expect(position.trove.debt).to.equal(expectedPosition.trove.debt); + expect(position.trove.icr).to.equal(expectedPosition.trove.icr); + + expect(position.stability.deposit).to.equal( + expectedPosition.stability.deposit + ); + expect(position.stability.ethGain).to.equal( + expectedPosition.stability.ethGain + ); + expect(position.stability.lqtyGain).to.equal( + expectedPosition.stability.lqtyGain + ); + + expect(position.stake.amount).to.equal(expectedPosition.stake.amount); + expect(position.stake.ethGain).to.equal(expectedPosition.stake.ethGain); + expect(position.stake.lusdGain).to.equal(expectedPosition.stake.lusdGain); }); }); @@ -109,7 +152,12 @@ describe("InstaLiquityResolver", () => { it("returns Liquity system state", async () => { const oracleEthPrice = await liquityPriceOracle.callStatic.fetchPrice(); const systemState = await liquity.getSystemState(oracleEthPrice); - expect(systemState).to.eql(expectedSystemState); + expect(systemState.borrowFee).to.equal(expectedSystemState.borrowFee); + expect(systemState.ethTvl).to.equal(expectedSystemState.ethTvl); + expect(systemState.tcr).to.equal(expectedSystemState.tcr); + expect(systemState.isInRecoveryMode).to.equal( + expectedSystemState.isInRecoveryMode + ); }); }); @@ -124,8 +172,8 @@ describe("InstaLiquityResolver", () => { searchIterations ); - expect(upperHint).eq("0xbf9a4eCC4151f28C03100bA2C0555a3D3e439e69"); - expect(lowerHint).eq("0xa4FC81A7AB93360543eb1e814D0127f466012CED"); + expect(upperHint).eq(expectedTrovePositionHints.upperHint); + expect(lowerHint).eq(expectedTrovePositionHints.lowerHint); }); }); @@ -145,10 +193,12 @@ describe("InstaLiquityResolver", () => { searchIterations ); - expect(partialRedemptionHintNicr).eq("69529933762909647"); - expect(firstHint).eq("0xc16aDd8bA17ab81B27e930Da8a67848120565d8c"); - expect(upperHint).eq("0x66882C005188F0F4d95825ED7A7F78ed3055f167"); - expect(lowerHint).eq("0x0C22C11a8ed4C23ffD19629283548B1692b58e92"); + expect(partialRedemptionHintNicr).eq( + expectedRedemptionPositionHints.partialRedemptionHintNicr + ); + expect(firstHint).eq(expectedRedemptionPositionHints.firstHint); + expect(upperHint).eq(expectedRedemptionPositionHints.upperHint); + expect(lowerHint).eq(expectedRedemptionPositionHints.lowerHint); }); }); });