diff --git a/lbrynet/core/utils.py b/lbrynet/core/utils.py index 9491c26fa..85af1a7c4 100644 --- a/lbrynet/core/utils.py +++ b/lbrynet/core/utils.py @@ -11,12 +11,28 @@ import yaml from lbrynet.core.cryptoutils import get_lbry_hash_obj -blobhash_length = get_lbry_hash_obj().digest_size * 2 # digest_size is in bytes, and blob hashes are hex encoded +# digest_size is in bytes, and blob hashes are hex encoded +blobhash_length = get_lbry_hash_obj().digest_size * 2 log = logging.getLogger(__name__) +# defining this here allows for easier overriding in testing +def now(): + return datetime.datetime.now() + +def utcnow(): + return datetime.datetime.utcnow() + +def isonow(): + """Return utc now in isoformat with timezone""" + return utcnow().isoformat() + 'Z' + +def today(): + return datetime.datetime.today() + + def generate_id(num=None): h = get_lbry_hash_obj() if num is not None: @@ -86,10 +102,6 @@ def save_settings(path, settings): f.close() -def today(): - return datetime.datetime.today() - - def check_connection(server="www.lbry.io", port=80): """Attempts to open a socket to server:port and returns True if successful.""" try: diff --git a/tests/unit/core/test_ExchangeRateManager.py b/tests/unit/core/test_ExchangeRateManager.py index 96827c263..1cd24b700 100644 --- a/tests/unit/core/test_ExchangeRateManager.py +++ b/tests/unit/core/test_ExchangeRateManager.py @@ -1,9 +1,10 @@ -import mock from lbrynet.metadata import Fee from lbrynet.lbrynet_daemon import ExchangeRateManager from twisted.trial import unittest +from tests import util + class FeeFormatTest(unittest.TestCase): def test_fee_created_with_correct_inputs(self): @@ -19,10 +20,7 @@ class FeeFormatTest(unittest.TestCase): class FeeTest(unittest.TestCase): def setUp(self): - patcher = mock.patch('time.time') - self.time = patcher.start() - self.time.return_value = 0 - self.addCleanup(patcher.stop) + util.resetTime(self) def test_fee_converts_to_lbc(self): fee_dict = { @@ -31,6 +29,10 @@ class FeeTest(unittest.TestCase): 'address': "bRcHraa8bYJZL7vkh5sNmGwPDERFUjGPP9" } } - rates = {'BTCLBC': {'spot': 3.0, 'ts': 2}, 'USDBTC': {'spot': 2.0, 'ts': 3}} + rates = { + 'BTCLBC': {'spot': 3.0, 'ts': util.DEFAULT_ISO_TIME + 1}, + 'USDBTC': {'spot': 2.0, 'ts': util.DEFAULT_ISO_TIME + 2} + } manager = ExchangeRateManager.DummyExchangeRateManager(rates) - self.assertEqual(60.0, manager.to_lbc(fee_dict).amount) + result = manager.to_lbc(fee_dict).amount + self.assertEqual(60.0, result) diff --git a/tests/util.py b/tests/util.py new file mode 100644 index 000000000..34e644511 --- /dev/null +++ b/tests/util.py @@ -0,0 +1,23 @@ +import datetime +import time + +import mock + + +DEFAULT_TIMESTAMP = datetime.datetime(2016, 1, 1) +DEFAULT_ISO_TIME = time.mktime(DEFAULT_TIMESTAMP.timetuple()) + + +def resetTime(test_case, timestamp=DEFAULT_TIMESTAMP): + iso_time = time.mktime(timestamp.timetuple()) + patcher = mock.patch('time.time') + patcher.start().return_value = iso_time + test_case.addCleanup(patcher.stop) + + patcher = mock.patch('lbrynet.core.utils.now') + patcher.start().return_value = timestamp + test_case.addCleanup(patcher.stop) + + patcher = mock.patch('lbrynet.core.utils.utcnow') + patcher.start().return_value = timestamp + test_case.addCleanup(patcher.stop)