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
Neeraj Kashyap 2021-12-18 12:30:09 -08:00
rodzic cad68dcfa8
commit aa18d54c6d
5 zmienionych plików z 68 dodań i 32 usunięć

Wyświetl plik

@ -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;
}

Wyświetl plik

@ -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;
}

Wyświetl plik

@ -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)

Wyświetl plik

@ -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)

Wyświetl plik

@ -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()