kopia lustrzana https://github.com/bugout-dev/dao
Deployment test for terminus
ERC20Facet.controller -> ERC20Facet.moonstreamController TerminusFacet.controller -> TerminusFacet.terminusController When both facets had view methods of the same name, `dao.core.facet_cut` was not mounting the `TerminusFacet.controller` method to the diamond because of its precedence rules.pull/9/head
rodzic
cad68dcfa8
commit
aa18d54c6d
|
@ -16,7 +16,7 @@ import "../diamond/libraries/LibDiamond.sol";
|
|||
contract ERC20Facet is ERC20WithCommonStorage {
|
||||
constructor() {}
|
||||
|
||||
function controller() external view returns (address) {
|
||||
function moonstreamController() external view returns (address) {
|
||||
return LibERC20.erc20Storage().controller;
|
||||
}
|
||||
|
||||
|
|
|
@ -16,7 +16,7 @@ import "../diamond/libraries/LibDiamond.sol";
|
|||
contract TerminusFacet is ERC1155WithTerminusStorage {
|
||||
constructor() {}
|
||||
|
||||
function controller() external view returns (address) {
|
||||
function terminusController() external view returns (address) {
|
||||
return LibTerminus.terminusStorage().controller;
|
||||
}
|
||||
|
||||
|
|
|
@ -102,10 +102,6 @@ class ERC20Facet:
|
|||
self.assert_contract_is_instantiated()
|
||||
return self.contract.balanceOf.call(account)
|
||||
|
||||
def controller(self) -> Any:
|
||||
self.assert_contract_is_instantiated()
|
||||
return self.contract.controller.call()
|
||||
|
||||
def decimals(self) -> Any:
|
||||
self.assert_contract_is_instantiated()
|
||||
return self.contract.decimals.call()
|
||||
|
@ -128,6 +124,10 @@ class ERC20Facet:
|
|||
self.assert_contract_is_instantiated()
|
||||
return self.contract.mint(account, amount, transaction_config)
|
||||
|
||||
def moonstream_controller(self) -> Any:
|
||||
self.assert_contract_is_instantiated()
|
||||
return self.contract.moonstreamController.call()
|
||||
|
||||
def name(self) -> Any:
|
||||
self.assert_contract_is_instantiated()
|
||||
return self.contract.name.call()
|
||||
|
@ -231,13 +231,6 @@ def handle_balance_of(args: argparse.Namespace) -> None:
|
|||
print(result)
|
||||
|
||||
|
||||
def handle_controller(args: argparse.Namespace) -> None:
|
||||
network.connect(args.network)
|
||||
contract = ERC20Facet(args.address)
|
||||
result = contract.controller()
|
||||
print(result)
|
||||
|
||||
|
||||
def handle_decimals(args: argparse.Namespace) -> None:
|
||||
network.connect(args.network)
|
||||
contract = ERC20Facet(args.address)
|
||||
|
@ -279,6 +272,13 @@ def handle_mint(args: argparse.Namespace) -> None:
|
|||
print(result)
|
||||
|
||||
|
||||
def handle_moonstream_controller(args: argparse.Namespace) -> None:
|
||||
network.connect(args.network)
|
||||
contract = ERC20Facet(args.address)
|
||||
result = contract.moonstream_controller()
|
||||
print(result)
|
||||
|
||||
|
||||
def handle_name(args: argparse.Namespace) -> None:
|
||||
network.connect(args.network)
|
||||
contract = ERC20Facet(args.address)
|
||||
|
@ -365,10 +365,6 @@ def generate_cli() -> argparse.ArgumentParser:
|
|||
balance_of_parser.add_argument("--account", required=True, help="Type: address")
|
||||
balance_of_parser.set_defaults(func=handle_balance_of)
|
||||
|
||||
controller_parser = subcommands.add_parser("controller")
|
||||
add_default_arguments(controller_parser, False)
|
||||
controller_parser.set_defaults(func=handle_controller)
|
||||
|
||||
decimals_parser = subcommands.add_parser("decimals")
|
||||
add_default_arguments(decimals_parser, False)
|
||||
decimals_parser.set_defaults(func=handle_decimals)
|
||||
|
@ -399,6 +395,10 @@ def generate_cli() -> argparse.ArgumentParser:
|
|||
mint_parser.add_argument("--amount", required=True, help="Type: uint256", type=int)
|
||||
mint_parser.set_defaults(func=handle_mint)
|
||||
|
||||
moonstream_controller_parser = subcommands.add_parser("moonstream-controller")
|
||||
add_default_arguments(moonstream_controller_parser, False)
|
||||
moonstream_controller_parser.set_defaults(func=handle_moonstream_controller)
|
||||
|
||||
name_parser = subcommands.add_parser("name")
|
||||
add_default_arguments(name_parser, False)
|
||||
name_parser.set_defaults(func=handle_name)
|
||||
|
|
|
@ -98,10 +98,6 @@ class TerminusFacet:
|
|||
self.assert_contract_is_instantiated()
|
||||
return self.contract.balanceOfBatch.call(accounts, ids)
|
||||
|
||||
def controller(self) -> Any:
|
||||
self.assert_contract_is_instantiated()
|
||||
return self.contract.controller.call()
|
||||
|
||||
def create_pool(self, transaction_config) -> Any:
|
||||
self.assert_contract_is_instantiated()
|
||||
return self.contract.createPool(transaction_config)
|
||||
|
@ -176,6 +172,10 @@ class TerminusFacet:
|
|||
self.assert_contract_is_instantiated()
|
||||
return self.contract.supportsInterface.call(interface_id)
|
||||
|
||||
def terminus_controller(self) -> Any:
|
||||
self.assert_contract_is_instantiated()
|
||||
return self.contract.terminusController.call()
|
||||
|
||||
def total_pools(self) -> Any:
|
||||
self.assert_contract_is_instantiated()
|
||||
return self.contract.totalPools.call()
|
||||
|
@ -245,13 +245,6 @@ def handle_balance_of_batch(args: argparse.Namespace) -> None:
|
|||
print(result)
|
||||
|
||||
|
||||
def handle_controller(args: argparse.Namespace) -> None:
|
||||
network.connect(args.network)
|
||||
contract = TerminusFacet(args.address)
|
||||
result = contract.controller()
|
||||
print(result)
|
||||
|
||||
|
||||
def handle_create_pool(args: argparse.Namespace) -> None:
|
||||
network.connect(args.network)
|
||||
contract = TerminusFacet(args.address)
|
||||
|
@ -356,6 +349,13 @@ def handle_supports_interface(args: argparse.Namespace) -> None:
|
|||
print(result)
|
||||
|
||||
|
||||
def handle_terminus_controller(args: argparse.Namespace) -> None:
|
||||
network.connect(args.network)
|
||||
contract = TerminusFacet(args.address)
|
||||
result = contract.terminus_controller()
|
||||
print(result)
|
||||
|
||||
|
||||
def handle_total_pools(args: argparse.Namespace) -> None:
|
||||
network.connect(args.network)
|
||||
contract = TerminusFacet(args.address)
|
||||
|
@ -397,10 +397,6 @@ def generate_cli() -> argparse.ArgumentParser:
|
|||
)
|
||||
balance_of_batch_parser.set_defaults(func=handle_balance_of_batch)
|
||||
|
||||
controller_parser = subcommands.add_parser("controller")
|
||||
add_default_arguments(controller_parser, False)
|
||||
controller_parser.set_defaults(func=handle_controller)
|
||||
|
||||
create_pool_parser = subcommands.add_parser("create-pool")
|
||||
add_default_arguments(create_pool_parser, True)
|
||||
create_pool_parser.set_defaults(func=handle_create_pool)
|
||||
|
@ -502,6 +498,10 @@ def generate_cli() -> argparse.ArgumentParser:
|
|||
)
|
||||
supports_interface_parser.set_defaults(func=handle_supports_interface)
|
||||
|
||||
terminus_controller_parser = subcommands.add_parser("terminus-controller")
|
||||
add_default_arguments(terminus_controller_parser, False)
|
||||
terminus_controller_parser.set_defaults(func=handle_terminus_controller)
|
||||
|
||||
total_pools_parser = subcommands.add_parser("total-pools")
|
||||
add_default_arguments(total_pools_parser, False)
|
||||
total_pools_parser.set_defaults(func=handle_total_pools)
|
||||
|
|
|
@ -0,0 +1,36 @@
|
|||
import unittest
|
||||
|
||||
from brownie import accounts
|
||||
import brownie
|
||||
|
||||
from . import TerminusFacet, TerminusInitializer
|
||||
from .core import ZERO_ADDRESS, facet_cut
|
||||
from .test_core import MoonstreamDAOTestCase, MoonstreamDAOFullTestCase
|
||||
|
||||
|
||||
class TestDeployment(MoonstreamDAOTestCase):
|
||||
def test_add_and_replace(self):
|
||||
initializer = TerminusInitializer.TerminusInitializer(None)
|
||||
initializer.deploy({"from": accounts[0]})
|
||||
|
||||
terminus_facet = TerminusFacet.TerminusFacet(None)
|
||||
terminus_facet.deploy({"from": accounts[0]})
|
||||
|
||||
diamond_address = self.contracts["Diamond"]
|
||||
facet_cut(
|
||||
diamond_address,
|
||||
"TerminusFacet",
|
||||
terminus_facet.address,
|
||||
"add",
|
||||
{"from": accounts[0]},
|
||||
initializer.address,
|
||||
)
|
||||
|
||||
diamond_terminus = TerminusFacet.TerminusFacet(diamond_address)
|
||||
|
||||
controller = diamond_terminus.terminus_controller()
|
||||
self.assertEqual(controller, accounts[0].address)
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
unittest.main()
|
Ładowanie…
Reference in New Issue