function testUpgrageTier() public {
vm.startPrank(DefaultAdmin1);
s_CurrencyManager.addCurrency(currency);
bool isItWhitelisted = s_CurrencyManager.isCurrencyWhitelisted(currency);
DAOInputConfig memory s_DAOInputConfig = DAOInputConfig({
ensname: ensName,
daoType: s_DAOType,
currency:currency,
maxMembers: MaxMembers,
noOfTiers: TIER_MAX
});
TierConfig memory tierConfig1 = TierConfig({
amount: s_amount,
price: s_price,
power: s_power,
minted: s_minted
});
TierConfig memory tierConfig2 = TierConfig({
amount: s_amount,
price: TOKEN_10K,
power: s_power,
minted: s_minted
});
TierConfig memory tierConfig3 = TierConfig({
amount: s_amount,
price: TOKEN_10K,
power: s_power,
minted: s_minted
});
TierConfig memory tierConfig4 = TierConfig({
amount: s_amount,
price: TOKEN_10K,
power: s_power,
minted: s_minted
});
TierConfig memory tierConfig5 = TierConfig({
amount: s_amount,
price: TOKEN_10K,
power: s_power,
minted: s_minted
});
TierConfig memory tierConfig6 = TierConfig({
amount: s_amount,
price: TOKEN_10K,
power: s_power,
minted: s_minted
});
TierConfig memory tierConfig7 = TierConfig({
amount: s_amount,
price: TOKEN_10K,
power: s_power,
minted: s_minted
});
TierConfig[7] memory fixedTierConfig = [tierConfig1, tierConfig2, tierConfig3, tierConfig4, tierConfig5, tierConfig6, tierConfig7];
TierConfig[] memory tierConfig = new TierConfig[]();
for (uint256 i = 0; i < fixedTierConfig.length; i++) {
tierConfig[i] = fixedTierConfig[i];
}
address a_createNewDAO = s_MembershipFactory.createNewDAOMembership(s_DAOInputConfig, tierConfig );
vm.stopPrank();
vm.startPrank(USER1);
wETH.mint(USER1,TOKEN_10K );
wETH.approve(address(s_MembershipFactory), TOKEN_10K);
s_MembershipFactory.joinDAO(a_createNewDAO, 1);
console.log("this is the balance of weth in 1155 contract ",wETH.balanceOf(address(s_OWPIdentity)));
console.log(address(s_OWPIdentity));
vm.stopPrank();
vm.startPrank(USER1);
wETH.mint(USER1,TOKEN_10K );
wETH.approve(address(s_MembershipFactory), TOKEN_10K);
s_MembershipFactory.joinDAO(a_createNewDAO, 1);
DAOConfig memory daoConfig = s_MembershipFactory.getDAOConfig(a_createNewDAO);
console.log("before minted count in tier 2:", daoConfig.tiers[1].minted);
vm.stopPrank();
vm.startPrank(USER1);
s_MembershipFactory.upgradeTier(a_createNewDAO, 1);
DAOConfig memory daoConfig2 = s_MembershipFactory.getDAOConfig(a_createNewDAO);
console.log("After minted count in tier 2:", daoConfig2.tiers[1].minted);
console.log("After minted count in tier index 0:", daoConfig2.tiers[0].minted);
vm.stopPrank();
}
function upgradeTier(address daoMembershipAddress, uint256 fromTierIndex) external {
require(daos[daoMembershipAddress].daoType == DAOType.SPONSORED, "Upgrade not allowed.");
require(daos[daoMembershipAddress].noOfTiers >= fromTierIndex + 1, "No higher tier available.");
+ daos[daoMembershipAddress].tiers[fromTierIndex].minted -= 2;
+ daos[daoMembershipAddress].tiers[fromTierIndex - 1].minted += 1;
IMembershipERC1155(daoMembershipAddress).burn(_msgSender(), fromTierIndex, 2);
IMembershipERC1155(daoMembershipAddress).mint(_msgSender(), fromTierIndex - 1, 1);
emit UserJoinedDAO(_msgSender(), daoMembershipAddress, fromTierIndex - 1);
}