Intro MockPolicyManagerAgent

pull/1949/head
Kieran R. Prasch 2020-05-05 15:22:24 -07:00
parent a58af7daf3
commit 1164db20f4
1 changed files with 15 additions and 7 deletions

View File

@ -7,7 +7,7 @@ from hexbytes import HexBytes
from unittest.mock import Mock from unittest.mock import Mock
from nucypher.blockchain.economics import EconomicsFactory from nucypher.blockchain.economics import EconomicsFactory
from nucypher.blockchain.eth.agents import WorkLockAgent, StakingEscrowAgent, NucypherTokenAgent from nucypher.blockchain.eth.agents import WorkLockAgent, StakingEscrowAgent, NucypherTokenAgent, PolicyManagerAgent
from nucypher.blockchain.eth.constants import NULL_ADDRESS from nucypher.blockchain.eth.constants import NULL_ADDRESS
from nucypher.blockchain.eth.interfaces import BlockchainInterfaceFactory from nucypher.blockchain.eth.interfaces import BlockchainInterfaceFactory
from nucypher.utilities.sandbox.constants import MOCK_PROVIDER_URI from nucypher.utilities.sandbox.constants import MOCK_PROVIDER_URI
@ -143,15 +143,19 @@ class MockContractAgent:
class MockNucypherToken(MockContractAgent, NucypherTokenAgent): class MockNucypherToken(MockContractAgent, NucypherTokenAgent):
"""Look at me im a token!"""
pass
class MockStakingAgent(MockContractAgent, StakingEscrowAgent): class MockStakingAgent(MockContractAgent, StakingEscrowAgent):
"""dont forget the eggs!"""
CALLS = ('get_completed_work', ) CALLS = ('get_completed_work', )
class MockPolicyManagerAgent(MockContractAgent, PolicyManagerAgent):
"""The best ethereum policy manager ever"""
class MockWorkLockAgent(MockContractAgent, WorkLockAgent): class MockWorkLockAgent(MockContractAgent, WorkLockAgent):
CALLS = ('check_claim', CALLS = ('check_claim',
@ -192,17 +196,21 @@ class MockWorkLockAgent(MockContractAgent, WorkLockAgent):
class MockContractAgency: class MockContractAgency:
# Test doubles registry # Test doubles
DOUBLE_AGENTS = {WorkLockAgent: MockWorkLockAgent, DOUBLE_AGENTS = {NucypherTokenAgent: MockNucypherToken,
StakingEscrowAgent: MockStakingAgent, StakingEscrowAgent: MockStakingAgent,
NucypherTokenAgent: MockNucypherToken} PolicyManagerAgent: MockPolicyManagerAgent,
WorkLockAgent: MockWorkLockAgent}
class NoMockFound(ValueError):
"""Well we hadn't made one yet"""
@classmethod @classmethod
def get_agent(cls, agent_class, *args, **kwargs) -> MockContractAgent: def get_agent(cls, agent_class, *args, **kwargs) -> MockContractAgent:
try: try:
double = cls.DOUBLE_AGENTS[agent_class] double = cls.DOUBLE_AGENTS[agent_class]
except KeyError: except KeyError:
raise ValueError(f'No mock available for "{str(agent_class)}"') raise ValueError(f'No mock class available for "{str(agent_class)}"')
else: else:
return double() return double()