forked from LBRYCommunity/lbry-sdk
fixup fake exchange rate manager for integration tests
This commit is contained in:
parent
e36c672c9a
commit
46c6588aa1
3 changed files with 29 additions and 30 deletions
|
@ -3,7 +3,9 @@ import json
|
|||
import shutil
|
||||
import tempfile
|
||||
import logging
|
||||
from time import time
|
||||
from binascii import unhexlify
|
||||
from functools import partial
|
||||
|
||||
from torba.testcase import IntegrationTestCase, WalletNode
|
||||
|
||||
|
@ -20,19 +22,22 @@ from lbry.extras.daemon.Components import (
|
|||
UPNP_COMPONENT, EXCHANGE_RATE_MANAGER_COMPONENT
|
||||
)
|
||||
from lbry.extras.daemon.ComponentManager import ComponentManager
|
||||
from lbry.extras.daemon.exchange_rate_manager import ExchangeRateManager as BaseExchangeRateManager
|
||||
from lbry.extras.daemon.exchange_rate_manager import (
|
||||
ExchangeRateManager, ExchangeRate, LBRYFeed, LBRYBTCFeed
|
||||
)
|
||||
from lbry.extras.daemon.storage import SQLiteStorage
|
||||
from lbry.blob.blob_manager import BlobManager
|
||||
from lbry.stream.reflector.server import ReflectorServer
|
||||
from lbry.blob_exchange.server import BlobServer
|
||||
|
||||
|
||||
class FakeExchangeRateManager(BaseExchangeRateManager):
|
||||
class FakeExchangeRateManager(ExchangeRateManager):
|
||||
|
||||
def __init__(self):
|
||||
super().__init__()
|
||||
for i, feed in enumerate(self.market_feeds):
|
||||
feed._save_price(i+1)
|
||||
def __init__(self, market_feeds, rates):
|
||||
self.market_feeds = market_feeds
|
||||
for feed in self.market_feeds:
|
||||
feed.last_check = time()
|
||||
feed.rate = ExchangeRate(feed.market, rates[feed.market], time())
|
||||
|
||||
def start(self):
|
||||
pass
|
||||
|
@ -41,15 +46,22 @@ class FakeExchangeRateManager(BaseExchangeRateManager):
|
|||
pass
|
||||
|
||||
|
||||
def get_fake_exchange_rate_manager(rates=None):
|
||||
return FakeExchangeRateManager(
|
||||
[LBRYFeed(), LBRYBTCFeed()],
|
||||
rates or {'BTCLBC': 3.0, 'USDBTC': 2.0}
|
||||
)
|
||||
|
||||
|
||||
class ExchangeRateManagerComponent(Component):
|
||||
component_name = EXCHANGE_RATE_MANAGER_COMPONENT
|
||||
|
||||
def __init__(self, component_manager):
|
||||
def __init__(self, component_manager, rates=None):
|
||||
super().__init__(component_manager)
|
||||
self.exchange_rate_manager = FakeExchangeRateManager()
|
||||
self.exchange_rate_manager = get_fake_exchange_rate_manager(rates)
|
||||
|
||||
@property
|
||||
def component(self) -> BaseExchangeRateManager:
|
||||
def component(self) -> ExchangeRateManager:
|
||||
return self.exchange_rate_manager
|
||||
|
||||
async def start(self):
|
||||
|
@ -151,7 +163,9 @@ class CommandTestCase(IntegrationTestCase):
|
|||
|
||||
daemon = Daemon(conf, ComponentManager(
|
||||
conf, skip_components=conf.components_to_skip, wallet=wallet_maker,
|
||||
exchange_rate_manager=ExchangeRateManagerComponent
|
||||
exchange_rate_manager=partial(ExchangeRateManagerComponent, rates={
|
||||
'BTCLBC': 1.0, 'USDBTC': 2.0
|
||||
})
|
||||
))
|
||||
await daemon.initialize()
|
||||
self.daemons.append(daemon)
|
||||
|
|
|
@ -9,24 +9,10 @@ from lbry.extras.daemon.exchange_rate_manager import (
|
|||
BittrexFeed,
|
||||
)
|
||||
from torba.testcase import AsyncioTestCase
|
||||
from lbry.testcase import FakeExchangeRateManager, get_fake_exchange_rate_manager
|
||||
from lbry.error import InvalidExchangeRateResponseError
|
||||
|
||||
|
||||
class DummyExchangeRateManager(ExchangeRateManager):
|
||||
def __init__(self, market_feeds, rates):
|
||||
self.market_feeds = market_feeds
|
||||
for feed in self.market_feeds:
|
||||
feed.last_check = time()
|
||||
feed.rate = ExchangeRate(feed.market, rates[feed.market], time())
|
||||
|
||||
|
||||
def get_dummy_exchange_rate_manager():
|
||||
return DummyExchangeRateManager(
|
||||
[LBRYFeed(), LBRYBTCFeed()],
|
||||
{'BTCLBC': 3.0, 'USDBTC': 2.0}
|
||||
)
|
||||
|
||||
|
||||
class ExchangeRateTests(AsyncioTestCase):
|
||||
|
||||
def test_invalid_rates(self):
|
||||
|
@ -39,7 +25,7 @@ class ExchangeRateTests(AsyncioTestCase):
|
|||
fee = Claim().stream.fee
|
||||
fee.usd = Decimal(10.0)
|
||||
fee.address = "bRcHraa8bYJZL7vkh5sNmGwPDERFUjGPP9"
|
||||
manager = get_dummy_exchange_rate_manager()
|
||||
manager = get_fake_exchange_rate_manager()
|
||||
result = manager.convert_currency(fee.currency, "LBC", fee.amount)
|
||||
self.assertEqual(60.0, result)
|
||||
|
||||
|
@ -47,7 +33,7 @@ class ExchangeRateTests(AsyncioTestCase):
|
|||
fee = Claim().stream.fee
|
||||
fee.usd = Decimal(1.0)
|
||||
fee.address = "bRcHraa8bYJZL7vkh5sNmGwPDERFUjGPP9"
|
||||
manager = DummyExchangeRateManager([LBRYFeed()], {'BTCLBC': 1.0})
|
||||
manager = FakeExchangeRateManager([LBRYFeed()], {'BTCLBC': 1.0})
|
||||
with self.assertRaises(CurrencyConversionError):
|
||||
manager.convert_currency(fee.currency, "LBC", fee.amount)
|
||||
|
||||
|
|
|
@ -3,11 +3,10 @@ import shutil
|
|||
import binascii
|
||||
from unittest import mock
|
||||
import asyncio
|
||||
import time
|
||||
import json
|
||||
from decimal import Decimal
|
||||
from tests.unit.blob_exchange.test_transfer_blob import BlobExchangeTestBase
|
||||
from tests.unit.lbrynet_daemon.test_exchange_rate_manager import get_dummy_exchange_rate_manager
|
||||
from lbry.testcase import get_fake_exchange_rate_manager
|
||||
from lbry.utils import generate_id
|
||||
from torba.client.errors import InsufficientFundsError
|
||||
from lbry.error import KeyFeeAboveMaxAllowedError, ResolveError, DownloadSDTimeoutError, DownloadDataTimeoutError
|
||||
|
@ -140,7 +139,7 @@ class TestStreamManager(BlobExchangeTestBase):
|
|||
AnalyticsManager(self.client_config,
|
||||
binascii.hexlify(generate_id()).decode(),
|
||||
binascii.hexlify(generate_id()).decode()))
|
||||
self.exchange_rate_manager = get_dummy_exchange_rate_manager()
|
||||
self.exchange_rate_manager = get_fake_exchange_rate_manager()
|
||||
|
||||
async def _test_time_to_first_bytes(self, check_post, error=None, after_setup=None):
|
||||
await self.setup_stream_manager()
|
||||
|
|
Loading…
Reference in a new issue