143 lines
		
	
	
		
			3.4 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			143 lines
		
	
	
		
			3.4 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
| # pragma pylint: disable=missing-docstring
 | |
| from datetime import datetime
 | |
| from unittest.mock import MagicMock
 | |
| 
 | |
| import pytest
 | |
| from jsonschema import validate
 | |
| from telegram import Message, Chat, Update
 | |
| 
 | |
| from freqtrade.misc import CONF_SCHEMA
 | |
| 
 | |
| 
 | |
| @pytest.fixture(scope="module")
 | |
| def default_conf():
 | |
|     """ Returns validated configuration suitable for most tests """
 | |
|     configuration = {
 | |
|         "max_open_trades": 3,
 | |
|         "stake_currency": "BTC",
 | |
|         "stake_amount": 0.004,
 | |
|         "dry_run": True,
 | |
|         "minimal_roi": {
 | |
| 	"30":  0.0,
 | |
|         "25":  0.015,
 | |
|         "20":  0.020,
 | |
|         "15":  0.025,
 | |
|         "10":  0.030,
 | |
|         "5":  0.035,
 | |
|         "0":  0.045
 | |
|         },
 | |
|         "stoploss": -0.03,
 | |
|         "bid_strategy": {
 | |
|             "ask_last_balance": 0.0
 | |
|         },
 | |
|         "exchange": {
 | |
|             "name": "bittrex",
 | |
|             "enabled": True,
 | |
|             "key": "key",
 | |
|             "secret": "secret",
 | |
| 	"pair_whitelist": ["BTC_EDG", "BTC_ETC", "BTC_MTL", "BTC_OK", "BTC_PAY", "BTC_PIVX", "BTC_SNT", "BTC_XZC", "BTC_VTC", "BTC_XLM", "BTC_SWT",
 | |
|         "BTC_MER", "BTC_FTC", "BTC_INCNT", "BTC_TIX", "BTC_RCN", "BTC_RLC", "BTC_TKN", "BTC_TRST", "BTC_MLN", "BTC_TIME", "BTC_LUN"]
 | |
|         },
 | |
|         "telegram": {
 | |
|             "enabled": True,
 | |
|             "token": "token",
 | |
|             "chat_id": "0"
 | |
|         },
 | |
|         "initial_state": "running"
 | |
|     }
 | |
|     validate(configuration, CONF_SCHEMA)
 | |
|     return configuration
 | |
| 
 | |
| 
 | |
| @pytest.fixture(scope="module")
 | |
| def backtest_conf():
 | |
|     return {
 | |
|         "max_open_trades": 3,
 | |
|         "stake_currency": "BTC",
 | |
|         "stake_amount": 0.004,
 | |
|         "minimal_roi": {
 | |
| 	"30":  0.0,
 | |
|         "25":  0.015,
 | |
|         "20":  0.020,
 | |
|         "15":  0.025,
 | |
|         "10":  0.030,
 | |
|         "5":  0.035,
 | |
|         "0":  0.045
 | |
|         },
 | |
|         "stoploss": -0.03
 | |
|     }
 | |
| 
 | |
| 
 | |
| @pytest.fixture
 | |
| def update():
 | |
|     _update = Update(0)
 | |
|     _update.message = Message(0, 0, datetime.utcnow(), Chat(0, 0))
 | |
|     return _update
 | |
| 
 | |
| 
 | |
| @pytest.fixture
 | |
| def ticker():
 | |
|     return MagicMock(return_value={
 | |
|         'bid': 0.07256061,
 | |
|         'ask': 0.072661,
 | |
|         'last': 0.07256061,
 | |
|     })
 | |
| 
 | |
| 
 | |
| @pytest.fixture
 | |
| def health():
 | |
|     return MagicMock(return_value=[{
 | |
|         'Currency': 'BTC',
 | |
|         'IsActive': True,
 | |
|         'LastChecked': '2017-11-13T20:15:00.00',
 | |
|         'Notice': None
 | |
|     }, {
 | |
|         'Currency': 'ETH',
 | |
|         'IsActive': True,
 | |
|         'LastChecked': '2017-11-13T20:15:00.00',
 | |
|         'Notice': None
 | |
|     }, {
 | |
|         'Currency': 'TRST',
 | |
|         'IsActive': True,
 | |
|         'LastChecked': '2017-11-13T20:15:00.00',
 | |
|         'Notice': None
 | |
|     }, {
 | |
|         'Currency': 'SWT',
 | |
|         'IsActive': True,
 | |
|         'LastChecked': '2017-11-13T20:15:00.00',
 | |
|         'Notice': None
 | |
|     }, {
 | |
|         'Currency': 'BCC',
 | |
|         'IsActive': False,
 | |
|         'LastChecked': '2017-11-13T20:15:00.00',
 | |
|         'Notice': None
 | |
|     }])
 | |
| 
 | |
| 
 | |
| @pytest.fixture
 | |
| def limit_buy_order():
 | |
|     return {
 | |
|         'id': 'mocked_limit_buy',
 | |
|         'type': 'LIMIT_BUY',
 | |
|         'pair': 'mocked',
 | |
|         'opened': datetime.utcnow(),
 | |
|         'rate': 0.07256061,
 | |
|         'amount': 206.43811673387373,
 | |
|         'remaining': 0.0,
 | |
|         'closed': datetime.utcnow(),
 | |
|     }
 | |
| 
 | |
| 
 | |
| @pytest.fixture
 | |
| def limit_sell_order():
 | |
|     return {
 | |
|         'id': 'mocked_limit_sell',
 | |
|         'type': 'LIMIT_SELL',
 | |
|         'pair': 'mocked',
 | |
|         'opened': datetime.utcnow(),
 | |
|         'rate': 0.0802134,
 | |
|         'amount': 206.43811673387373,
 | |
|         'remaining': 0.0,
 | |
|         'closed': datetime.utcnow(),
 | |
|     }
 |