Add "state" tests
Signed-off-by: Julien Riou <julien@riou.xyz>
This commit is contained in:
parent
6f4312cb4f
commit
14aa8a6d59
21 changed files with 116 additions and 3 deletions
4
tests/__init__.py
Normal file
4
tests/__init__.py
Normal file
|
@ -0,0 +1,4 @@
|
|||
import os
|
||||
import sys
|
||||
|
||||
sys.path.append(os.path.join(os.path.dirname(__file__), os.pardir, 'companion'))
|
100
tests/test_state.py
Normal file
100
tests/test_state.py
Normal file
|
@ -0,0 +1,100 @@
|
|||
import json
|
||||
import os
|
||||
|
||||
import pytest
|
||||
from companion.state import State
|
||||
|
||||
|
||||
class TestState:
|
||||
FILENAME = 'test_state.json'
|
||||
POOL_NAME = 'testpool'
|
||||
CONTENT = {
|
||||
'testpool': {
|
||||
'block': 1234,
|
||||
'balance': 1234,
|
||||
'payment': '0x0000000'
|
||||
}
|
||||
}
|
||||
|
||||
@pytest.fixture(scope='function')
|
||||
def state(self):
|
||||
return State(self.FILENAME)
|
||||
|
||||
@pytest.fixture(scope='function')
|
||||
def create_state(self):
|
||||
with open(self.FILENAME, 'w') as fd:
|
||||
json.dump(self.CONTENT, fd, indent=2)
|
||||
yield
|
||||
if os.path.isfile(self.FILENAME):
|
||||
os.unlink(self.FILENAME)
|
||||
|
||||
@pytest.fixture(scope='function')
|
||||
def remove_state(self):
|
||||
yield
|
||||
if os.path.isfile(self.FILENAME):
|
||||
os.unlink(self.FILENAME)
|
||||
|
||||
def test_init(self, state, remove_state):
|
||||
assert os.path.isfile(self.FILENAME)
|
||||
with open(self.FILENAME, 'r') as fd:
|
||||
assert json.load(fd) == {}
|
||||
|
||||
def test_read(self, state, create_state):
|
||||
content = state.read()
|
||||
for pool in self.CONTENT:
|
||||
assert pool in content
|
||||
for key in self.CONTENT[pool]:
|
||||
assert key in content[pool] and content[pool][key] == self.CONTENT[pool][key]
|
||||
|
||||
def test_write(self, state):
|
||||
state.write(pool_name=self.POOL_NAME)
|
||||
content = state.read()
|
||||
assert content[self.POOL_NAME] == {}
|
||||
|
||||
def test_write_block(self, create_state, state):
|
||||
state.write(pool_name=self.POOL_NAME, block_number=5678)
|
||||
content = state.read()
|
||||
assert content[self.POOL_NAME]['block'] == 5678
|
||||
|
||||
def test_write_empty_block(self, create_state, state):
|
||||
state.write(pool_name=self.POOL_NAME, block_number=None)
|
||||
content = state.read()
|
||||
assert content[self.POOL_NAME]['block'] == self.CONTENT[self.POOL_NAME]['block'] # not changed
|
||||
|
||||
def test_write_zero_block(self, create_state, state):
|
||||
state.write(pool_name=self.POOL_NAME, block_number=0)
|
||||
content = state.read()
|
||||
assert content[self.POOL_NAME]['block'] == 0
|
||||
|
||||
def test_write_balance(self, create_state, state):
|
||||
state.write(pool_name=self.POOL_NAME, miner_balance=5678)
|
||||
content = state.read()
|
||||
assert content[self.POOL_NAME]['balance'] == 5678
|
||||
|
||||
def test_write_empty_balance(self, create_state, state):
|
||||
state.write(pool_name=self.POOL_NAME, miner_balance=None)
|
||||
content = state.read()
|
||||
assert content[self.POOL_NAME]['balance'] == self.CONTENT[self.POOL_NAME]['balance'] # not changed
|
||||
|
||||
def test_write_zero_balance(self, create_state, state):
|
||||
state.write(pool_name=self.POOL_NAME, miner_balance=0)
|
||||
content = state.read()
|
||||
assert content[self.POOL_NAME]['balance'] == 0
|
||||
|
||||
def test_write_payment(self, create_state, state):
|
||||
state.write(pool_name=self.POOL_NAME, miner_payment='0x1111111')
|
||||
content = state.read()
|
||||
assert content[self.POOL_NAME]['payment'] == '0x1111111'
|
||||
|
||||
def test_write_empty_payment(self, create_state, state):
|
||||
state.write(pool_name=self.POOL_NAME, miner_payment=None)
|
||||
content = state.read()
|
||||
assert content[self.POOL_NAME]['payment'] == self.CONTENT[self.POOL_NAME]['payment'] # not changed
|
||||
|
||||
def test_get(self, create_state):
|
||||
state = State(filename=self.FILENAME)
|
||||
assert state.get(self.POOL_NAME) == self.CONTENT[self.POOL_NAME]
|
||||
|
||||
def test_get_missing_key(self, create_state):
|
||||
state = State(filename=self.FILENAME)
|
||||
assert state.get('UNKNOWN_POOL') == {}
|
Reference in a new issue