From 49e9a7c3ad25b765cf99ce9191e3960db2f4b409 Mon Sep 17 00:00:00 2001 From: Jeroen <1748621+hieronx@users.noreply.github.com> Date: Mon, 2 Sep 2024 15:21:13 +0200 Subject: [PATCH] Add test showing price lookup works even after removing a vault (#403) * Add test showing price lookup works even after removing a vault * Add base sepolia deployment * Reset adapter --- deployments/testnet/base-sepolia-demo.json | 34 +++++++++++++++++++++ test/fork/Fork.t.sol | 1 + test/integration/AssetShareConversion.t.sol | 24 +++++++++++++++ 3 files changed, 59 insertions(+) create mode 100644 deployments/testnet/base-sepolia-demo.json diff --git a/deployments/testnet/base-sepolia-demo.json b/deployments/testnet/base-sepolia-demo.json new file mode 100644 index 00000000..d2ea4e58 --- /dev/null +++ b/deployments/testnet/base-sepolia-demo.json @@ -0,0 +1,34 @@ +{ + "chainId": 84532, + "rpcUrl": "https://sepolia.base.org/", + "config": { + "commitHash": "6e8f1a29dff0d7cf5ff74285cfffadae8a8b303f", + "deployer": "0x423420Ae467df6e90291fd0252c0A8a637C1e03f", + "adapter": { + "name": "Axelar", + "axelarGateway": "0xe432150cce91c13a887f7D836923d5597adD8E31", + "axelarGasService": "0xbE406F0189A0B4cf3A05C286473D23791Dd44Cc6" + }, + "admin": "0x423420Ae467df6e90291fd0252c0A8a637C1e03f", + "etherscanUrl": "https://api.etherscan.io/api/" + }, + "contracts": { + "root": "0x86aFA8451FB7bDAa6eCE9eD9980a603Ab3705c6f", + "guardian": "0x0E371D2F84Bbf2D7773F7f51Fa434B192550240d", + "restrictionManager": "0x318228Ca44F96fe7d2DA84Ab38cd3E9775d1170a", + "investmentManager": "0x8503b4452Bf6238cC76CdbEE223b46d7196b1c93", + "poolManager": "0xfFFAFb8d12d130414FD423A1dEb35130ac302D10", + "centrifugeRouter": "0x1e67906F3F990F7d1B53bfcAB97346d4B16310E3", + "gateway": "0xeda53c42fCaa2a36473AE95c7EB8CE271D4979CD", + "gasService": "0x314fc3bf9984ca64DBB0d6b5A513F1cAAb812A4c", + "escrow": "0x1C535265A20Cfb5FE20baab086642C245117D6c9", + "routerEscrow": "0x425af5C6A68f535A47Cb811f5eB9dad3F6235432", + "adapter": "0xEC55dB8b44088198a2d72Da798535bffB64fBa5c", + "trancheFactory": "0xcE4D15c9d35995e5F46FE406c3E6aa3Fb97ad978", + "erc7540VaultFactory": "0x934eA3cAF6A798Cdf441408bF8C4D4F4E698cef0", + "transferProxyFactory": "0x2B0c5001F55067191735aCF05d251cDf26BB9ABf" + }, + "deploymentBlock": 6403738, + "isTestnet": true, + "isDeterministicallyDeployed": false +} diff --git a/test/fork/Fork.t.sol b/test/fork/Fork.t.sol index 44693826..133475fe 100644 --- a/test/fork/Fork.t.sol +++ b/test/fork/Fork.t.sol @@ -65,6 +65,7 @@ contract ForkTest is Test { // Testnet // _loadDeployment("testnet", "ethereum-sepolia-demo"); + _loadDeployment("testnet", "base-sepolia-demo"); } function testContractSetup() public { diff --git a/test/integration/AssetShareConversion.t.sol b/test/integration/AssetShareConversion.t.sol index 5bdae07c..af565892 100644 --- a/test/integration/AssetShareConversion.t.sol +++ b/test/integration/AssetShareConversion.t.sol @@ -102,4 +102,28 @@ contract AssetShareConversionTest is BaseTest { assertEq(vault.convertToAssets(vault.convertToShares(120000000000000000000)), 120000000000000000000); assertEq(vault.pricePerShare(), 1.2e18); } + + function testPriceWorksAfterRemovingVault(uint64 poolId, bytes16 trancheId, uint128 assetId) public { + vm.assume(assetId > 0); + + uint8 INVESTMENT_CURRENCY_DECIMALS = 6; // 6, like USDC + uint8 TRANCHE_TOKEN_DECIMALS = 18; // Like DAI + + ERC20 asset = _newErc20("Asset", "A", INVESTMENT_CURRENCY_DECIMALS); + address vault_ = + deployVault(poolId, TRANCHE_TOKEN_DECIMALS, restrictionManager, "", "", trancheId, assetId, address(asset)); + ERC7540Vault vault = ERC7540Vault(vault_); + ITranche tranche = ITranche(address(ERC7540Vault(vault_).share())); + + assertEq(vault.priceLastUpdated(), block.timestamp); + assertEq(vault.pricePerShare(), 1e6); + centrifugeChain.updateTranchePrice(poolId, trancheId, assetId, 1.2e18, uint64(block.timestamp)); + assertEq(vault.priceLastUpdated(), uint64(block.timestamp)); + assertEq(vault.pricePerShare(), 1.2e6); + + poolManager.removeVault(poolId, trancheId, address(vault.asset())); + + assertEq(vault.priceLastUpdated(), uint64(block.timestamp)); + assertEq(vault.pricePerShare(), 1.2e6); + } }