function testFuzz_RevertWhen_CreateIsPassedExistingVaultId(uint256 vaultId) external {
vaultId = bound(vaultId, MIN_VAULT_ID, MAX_VAULT_ID);
createVaults(marketMakingEngine, INITIAL_VAULT_ID, FINAL_VAULT_ID, true, address(perpsEngine));
VaultConfig memory fuzzVaultConfig = getFuzzVaultConfig(vaultId);
require(marketMakingEngine.vaultExists(fuzzVaultConfig.vaultId), "Vault must exist before testing duplicate creation.");
Vault.CreateParams memory params = Vault.CreateParams({
vaultId: fuzzVaultConfig.vaultId,
depositCap: fuzzVaultConfig.depositCap,
withdrawalDelay: fuzzVaultConfig.withdrawalDelay,
indexToken: fuzzVaultConfig.indexToken,
collateral: Collateral.Data({
creditRatio: fuzzVaultConfig.creditRatio,
priceAdapter: fuzzVaultConfig.priceAdapter,
asset: fuzzVaultConfig.asset,
isEnabled: fuzzVaultConfig.isEnabled,
decimals: fuzzVaultConfig.decimals
}),
depositFee: MOCK_DEPOSIT_FEE,
redeemFee: MOCK_REDEEM_FEE,
engine: address(perpsEngine)
});
vm.expectRevert(abi.encodeWithSelector(Errors.VaultAlreadyExists.selector, fuzzVaultConfig.vaultId));
marketMakingEngine.exposed_Vault_create(params);
}
function testFuzz_WhenCreateIsPassedValidVaultId(uint256 vaultId) external {
vaultId = bound(vaultId, MIN_VAULT_ID, MAX_VAULT_ID);
VaultConfig memory fuzzVaultConfig = getFuzzVaultConfig(vaultId);
Vault.CreateParams memory params = Vault.CreateParams({
vaultId: vaultId,
depositCap: fuzzVaultConfig.depositCap,
withdrawalDelay: fuzzVaultConfig.withdrawalDelay,
indexToken: fuzzVaultConfig.indexToken,
collateral: Collateral.Data({
creditRatio: fuzzVaultConfig.creditRatio,
priceAdapter: fuzzVaultConfig.priceAdapter,
asset: fuzzVaultConfig.asset,
isEnabled: fuzzVaultConfig.isEnabled,
decimals: fuzzVaultConfig.decimals
}),
depositFee: MOCK_DEPOSIT_FEE,
redeemFee: MOCK_REDEEM_FEE,
engine: address(perpsEngine)
});
marketMakingEngine.exposed_Vault_create(params);
bool vaultCreated = marketMakingEngine.vaultExists(fuzzVaultConfig.vaultId);
assertTrue(vaultCreated, "Vault should be successfully created.");
}