1
0
Fork 0
This repository has been archived on 2024-12-18. You can view files and clone it, but cannot push or open issues or pull requests.
mining-companion/tests/test_state.py
Julien Riou 14aa8a6d59
Add "state" tests
Signed-off-by: Julien Riou <julien@riou.xyz>
2021-02-12 09:43:38 +01:00

100 lines
3.5 KiB
Python

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') == {}