From 4c4070b8dc51d3d18b358abb6fea05c9aceb1de0 Mon Sep 17 00:00:00 2001 From: nolash Date: Fri, 27 Aug 2021 14:16:46 +0200 Subject: [PATCH] Add docstrings for unittest module --- chainsyncer/unittest/base.py | 44 +++++++++++++++++++++++++++++++++++- chainsyncer/unittest/db.py | 9 ++++++++ 2 files changed, 52 insertions(+), 1 deletion(-) diff --git a/chainsyncer/unittest/base.py b/chainsyncer/unittest/base.py index 2591d8a..2b2c120 100644 --- a/chainsyncer/unittest/base.py +++ b/chainsyncer/unittest/base.py @@ -14,35 +14,70 @@ logg = logging.getLogger().getChild(__name__) class MockConn: + """Noop connection mocker. + :param o: Object to execute rpc call for + :type o: dict + """ def do(self, o): pass class MockTx: + """Minimal mocked tx object. + :param index: Transaction index in block + :type index: int + :param tx_hash: Transaction hash + :type tx_hash: str + """ def __init__(self, index, tx_hash): self.hash = tx_hash self.index = index def apply_receipt(self, rcpt): + """Save receipt source in mock tx object. + + :param rcpt: Transaction receipt + :type rcpt: dict + """ self.rcpt = rcpt class MockBlock: def __init__(self, number, txs): + """Minimal mocked block object. + + :param number: Block number + :type number: int + :param txs: Transaction list to include in block + :type txs: list + """ self.number = number self.txs = txs def tx(self, i): + """Get block transaction at given index. + + :param i: Transaction index + :type i: int + """ return MockTx(i, self.txs[i]) class TestSyncer(HistorySyncer): + """Unittest extension of history syncer driver. + :param backend: Syncer backend + :type backend: chainsyncer.backend.base.Backend implementation + :param chain_interface: Chain interface + :type chain_interface: chainlib.interface.ChainInterface implementation + :param tx_counts: List of integer values defining how many mock transactions to generate per block. Mock blocks will be generated for each element in list. + :type tx_counts: list + """ def __init__(self, backend, chain_interface, tx_counts=[]): self.tx_counts = tx_counts @@ -50,6 +85,14 @@ class TestSyncer(HistorySyncer): def get(self, conn): + """Implements the block getter of chainsyncer.driver.base.Syncer. + + :param conn: RPC connection + :type conn: chainlib.connection.RPCConnection + :raises NoBlockForYou: End of mocked block array reached + :rtype: chainsyncer.unittest.base.MockBlock + :returns: Mock block. + """ (pair, fltr) = self.backend.get() (target_block, fltr) = self.backend.target() block_height = pair[0] @@ -57,7 +100,6 @@ class TestSyncer(HistorySyncer): if block_height == target_block: self.running = False raise NoBlockForYou() - return [] block_txs = [] if block_height < len(self.tx_counts): diff --git a/chainsyncer/unittest/db.py b/chainsyncer/unittest/db.py index 95b712c..094acfe 100644 --- a/chainsyncer/unittest/db.py +++ b/chainsyncer/unittest/db.py @@ -15,6 +15,11 @@ logg = logging.getLogger(__name__) class ChainSyncerDb: + """SQLITE database setup for unit tests + + :param debug: Activate sql level debug (outputs sql statements) + :type debug: bool + """ base = SessionBase @@ -48,8 +53,12 @@ class ChainSyncerDb: def bind_session(self, session=None): + """Create session using underlying session base + """ return self.base.bind_session(session) def release_session(self, session=None): + """Release session using underlying session base + """ return self.base.release_session(session)