From e88070659e7374a2af0ae544813623916ab8c6bc Mon Sep 17 00:00:00 2001 From: Yosuke Otosu Date: Tue, 13 Aug 2024 20:48:52 +0900 Subject: [PATCH] Change the attributes `purpose` and `redemption_date` defined in bond to updatable attributes --- contracts/token/IbetStraightBond.sol | 14 +++++ tests/token/test_IbetStraightBond.py | 84 ++++++++++++++++++++++++++++ 2 files changed, 98 insertions(+) diff --git a/contracts/token/IbetStraightBond.sol b/contracts/token/IbetStraightBond.sol index 637eedb..94b4f0c 100644 --- a/contracts/token/IbetStraightBond.sol +++ b/contracts/token/IbetStraightBond.sol @@ -405,6 +405,13 @@ contract IbetStraightBond is Ownable, IbetSecurityTokenInterface { emit ChangeFaceValue(_faceValue); } + /// @notice 償還日の更新 + /// @dev オーナーのみ実行可能 + /// @param _redemptionDate 更新後の償還日 + function setRedemptionDate(string memory _redemptionDate) public onlyOwner { + redemptionDate = _redemptionDate; + } + /// @notice 償還金額の更新 /// @dev オーナーのみ実行可能 /// @param _redemptionValue 更新後の償還金額 @@ -427,6 +434,13 @@ contract IbetStraightBond is Ownable, IbetSecurityTokenInterface { emit ChangeTransferApprovalRequired(_required); } + /// @notice 発行目的の更新 + /// @dev オーナーのみ実行可能 + /// @param _purpose 更新後の発行目的 + function setPurpose(string memory _purpose) public onlyOwner { + purpose = _purpose; + } + /// @notice 額面金額通貨の更新 /// @dev オーナーのみ実行可能 /// @param _faceValueCurrency 更新後の額面金額通貨 diff --git a/tests/token/test_IbetStraightBond.py b/tests/token/test_IbetStraightBond.py index 26a698b..80f731c 100644 --- a/tests/token/test_IbetStraightBond.py +++ b/tests/token/test_IbetStraightBond.py @@ -2661,6 +2661,48 @@ def test_error_1(self, users, IbetStraightBond): assert bond_token.redemptionValue() == deploy_args[6] +# TEST_setRedemptionDate +class TestSetRedemptionDate: + + ####################################### + # Normal + ####################################### + + # Normal_1 + def test_normal_1(self, users, IbetStraightBond): + issuer = users["issuer"] + + # issue token + deploy_args = init_args() + bond_token = brownie_utils.force_deploy(issuer, IbetStraightBond, *deploy_args) + + # update + bond_token.setRedemptionDate("20240813", {"from": issuer}) + + # assertion + assert bond_token.redemptionDate() == "20240813" + + ####################################### + # Error + ####################################### + + # Error_1 + # Not authorized + def test_error_1(self, users, IbetStraightBond): + issuer = users["issuer"] + + # issue token + deploy_args = init_args() + bond_token = brownie_utils.force_deploy(issuer, IbetStraightBond, *deploy_args) + + # update + with brownie.reverts(revert_msg="500001"): + bond_token.setRedemptionDate("20240813", {"from": users["user1"]}) + + # assertion + assert bond_token.redemptionDate() == deploy_args[5] + + # TEST_setTransferApprovalRequired class TestSetTransferApprovalRequired: @@ -2725,6 +2767,48 @@ def test_error_1(self, users, personal_info): assert bond_token.transferApprovalRequired() == False +# TEST_setPurpose +class TestSetPurpose: + + ####################################### + # Normal + ####################################### + + # Normal_1 + def test_normal_1(self, users, IbetStraightBond): + issuer = users["issuer"] + + # issue token + deploy_args = init_args() + bond_token = brownie_utils.force_deploy(issuer, IbetStraightBond, *deploy_args) + + # update + bond_token.setPurpose("updated_purpose", {"from": issuer}) + + # assertion + assert bond_token.purpose() == "updated_purpose" + + ####################################### + # Error + ####################################### + + # Error_1 + # Not authorized + def test_error_1(self, users, IbetStraightBond): + issuer = users["issuer"] + + # issue token + deploy_args = init_args() + bond_token = brownie_utils.force_deploy(issuer, IbetStraightBond, *deploy_args) + + # update + with brownie.reverts(revert_msg="500001"): + bond_token.setPurpose("updated_purpose", {"from": users["user1"]}) + + # assertion + assert bond_token.purpose() == deploy_args[10] + + # TEST_setFaceValueCurrency class TestSetFaceValueCurrency: