1
0
Fork 0

Add "state" tests

Signed-off-by: Julien Riou <julien@riou.xyz>
This commit is contained in:
Julien Riou 2021-02-12 09:43:38 +01:00
parent 6f4312cb4f
commit 14aa8a6d59
No known key found for this signature in database
GPG key ID: FF42D23B580C89F7
21 changed files with 116 additions and 3 deletions

4
tests/__init__.py Normal file
View 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
View 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') == {}