diff --git a/contracts/masset/BasketManagerV3.sol b/contracts/masset/BasketManagerV3.sol index 2a36e7c..c89dddd 100644 --- a/contracts/masset/BasketManagerV3.sol +++ b/contracts/masset/BasketManagerV3.sol @@ -373,14 +373,19 @@ contract BasketManagerV3 is OwnableUpgradeable, ERC1967UpgradeUpgradeable { factorMap[_basset] = 0; uint256 index; + bool found = false; for (uint256 i = 0; i < bassetsArray.length - 1; i++) { if (bassetsArray[i] == _basset) { index = i; + found = true; break; } } - bassetsArray[index] = bassetsArray[bassetsArray.length - 1]; + if(found) { + bassetsArray[index] = bassetsArray[bassetsArray.length - 1]; + } + bassetsArray.pop(); emit BassetRemoved(_basset); diff --git a/dist/hardhat.config.js b/dist/hardhat.config.js index 0a5a790..e23e391 100644 --- a/dist/hardhat.config.js +++ b/dist/hardhat.config.js @@ -40,7 +40,10 @@ require("hardhat-contract-sizer"); require("@openzeppelin/hardhat-upgrades"); require("@nomiclabs/hardhat-solhint"); require("./tasks"); -require("node_modules/sovrynsmartcontracts/hardhat/tasks/multisig"); +//@todo - resolve conflicts in "sovrynsmartcontracts": "git+https://github.com/DistributedCollective/Sovryn-smart-contracts.git" +// install the package +// uncomment the line below to use multisig scripts from the core repo +// import "node_modules/sovrynsmartcontracts/hardhat/tasks/multisig"; /* * Test hardhat forking with patched hardhat * diff --git a/dist/hardhat.config.js.map b/dist/hardhat.config.js.map index 9db7a38..332314d 100644 --- a/dist/hardhat.config.js.map +++ b/dist/hardhat.config.js.map @@ -1 +1 @@ -{"version":3,"file":"hardhat.config.js","sourceRoot":"","sources":["../hardhat.config.ts"],"names":[],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"hardhat.config.js","sourceRoot":"","sources":["../hardhat.config.ts"],"names":[],"mappings":"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"} \ No newline at end of file diff --git a/tests/masset/TestBasketManagerV3.spec.ts b/tests/masset/TestBasketManagerV3.spec.ts index 78e96b6..5ac2ae3 100644 --- a/tests/masset/TestBasketManagerV3.spec.ts +++ b/tests/masset/TestBasketManagerV3.spec.ts @@ -696,10 +696,18 @@ contract("BasketManagerV3", async (accounts) => { from: owner, }); + mockToken2 = await MockERC20.new("", "", 18, sa.dummy1, tokens(1000), { + from: owner, + }); + await basketManager.initialize(massetManagerMock, { from: owner }); await basketManager.addBasset(mockToken1.address, 1, 10, 100, false, { from: owner, }); + + await basketManager.addBasset(mockToken2.address, 1, 10, 100, false, { + from: owner, + }); }); context("should fail", async () => { @@ -728,7 +736,37 @@ contract("BasketManagerV3", async (accounts) => { context("should succeed", async () => { it("with all valid params", async () => { - const bassetToRemove = mockToken1.address; + const allCurrentlyActiveBassets = await basketManager.getBassets(); + const initialBassetLength = allCurrentlyActiveBassets.length; + + const bassetToRemove = allCurrentlyActiveBassets[0]; + + const bassetsListBefore = await basketManager.getBassets(); + expect(bassetsListBefore).to.contain(bassetToRemove); + + const { receipt } = await basketManager.removeBasset(bassetToRemove, { + from: owner, + }); + + const isValid = await basketManager.isValidBasset(bassetToRemove); + expect(isValid).to.equal(false); + + const bassetsListAfter = await basketManager.getBassets(); + expect(bassetsListAfter).not.to.contain(bassetToRemove); + + const latestBassetLength = bassetsListAfter.length; + expect(latestBassetLength + 1).to.equal(initialBassetLength); + + await expectEvent(receipt, "BassetRemoved", { basset: bassetToRemove }); + }); + + it("successfully removed the last index of basset", async () => { + const allCurrentlyActiveBassets = await basketManager.getBassets(); + const initialBassetLength = allCurrentlyActiveBassets.length; + + expect(allCurrentlyActiveBassets) + + const bassetToRemove = allCurrentlyActiveBassets[allCurrentlyActiveBassets.length - 1]; const bassetsListBefore = await basketManager.getBassets(); expect(bassetsListBefore).to.contain(bassetToRemove); @@ -743,8 +781,57 @@ contract("BasketManagerV3", async (accounts) => { const bassetsListAfter = await basketManager.getBassets(); expect(bassetsListAfter).not.to.contain(bassetToRemove); + const latestBassetLength = bassetsListAfter.length; + expect(latestBassetLength + 1).to.equal(initialBassetLength); + await expectEvent(receipt, "BassetRemoved", { basset: bassetToRemove }); }); + + it("successfully removed the last index of basset with 1 basset list only", async () => { + const allCurrentlyActiveBassets = await basketManager.getBassets(); + const initialBassetLength = allCurrentlyActiveBassets.length; + + expect(allCurrentlyActiveBassets) + + const bassetToRemove = allCurrentlyActiveBassets[allCurrentlyActiveBassets.length - 1]; + + const bassetsListBefore = await basketManager.getBassets(); + expect(bassetsListBefore).to.contain(bassetToRemove); + + const tx = await basketManager.removeBasset(bassetToRemove, { + from: owner, + }); + + let isValid = await basketManager.isValidBasset(bassetToRemove); + expect(isValid).to.equal(false); + + let bassetsListAfter = await basketManager.getBassets(); + expect(bassetsListAfter).not.to.contain(bassetToRemove); + + let latestBassetLength = bassetsListAfter.length; + expect(latestBassetLength + 1).to.equal(initialBassetLength); + + await expectEvent(tx.receipt, "BassetRemoved", { basset: bassetToRemove }); + + + /** remove last basset */ + const lastActiveBassets = await basketManager.getBassets(); + expect(lastActiveBassets.length).to.equal(1); + const tx2 = await basketManager.removeBasset(lastActiveBassets[0], { + from: owner, + }); + + isValid = await basketManager.isValidBasset(lastActiveBassets[0]); + expect(isValid).to.equal(false); + + bassetsListAfter = await basketManager.getBassets(); + expect(bassetsListAfter).not.to.contain(lastActiveBassets[0]); + + latestBassetLength = bassetsListAfter.length; + expect(latestBassetLength).to.equal(0); + + await expectEvent(tx2.receipt, "BassetRemoved", { basset: lastActiveBassets[0] }); + }); }); }); -}); +}); \ No newline at end of file