]> git.immae.eu Git - perso/Immae/Projets/Cryptomonnaies/Cryptoportfolio/Trader.git/blame - tests/helper.py
Fix timezone in tests
[perso/Immae/Projets/Cryptomonnaies/Cryptoportfolio/Trader.git] / tests / helper.py
CommitLineData
c682bdf4
IB
1import sys
2import unittest
3from decimal import Decimal as D
4from unittest import mock
5import requests_mock
6from io import StringIO
30700830 7import portfolio, market, main, store, dbs
8bbca32e 8import datetime
c682bdf4 9
3080f31d 10__all__ = ["limits", "unittest", "WebMockTestCase", "mock", "D",
8bbca32e 11 "StringIO", "tz"]
c682bdf4 12
3080f31d
IB
13limits = ["acceptance", "unit"]
14for test_type in limits:
15 if "--no{}".format(test_type) in sys.argv:
16 sys.argv.remove("--no{}".format(test_type))
17 limits.remove(test_type)
18 if "--only{}".format(test_type) in sys.argv:
19 sys.argv.remove("--only{}".format(test_type))
20 limits = [test_type]
21 break
22
8bbca32e
IB
23def tz(hours):
24 return datetime.timezone(datetime.timedelta(hours=hours))
25
c682bdf4
IB
26class WebMockTestCase(unittest.TestCase):
27 import time
28
29 def market_args(self, debug=False, quiet=False, report_path=None, **kwargs):
30 return main.configargparse.Namespace(report_path=report_path,
31 debug=debug, quiet=quiet, **kwargs)
32
33 def setUp(self):
34 super().setUp()
35 self.wm = requests_mock.Mocker()
36 self.wm.start()
37
38 # market
39 self.m = mock.Mock(name="Market", spec=market.Market)
40 self.m.debug = False
41
42 self.patchers = [
43 mock.patch.multiple(market.Portfolio,
44 data=store.LockedVar(None),
45 liquidities=store.LockedVar({}),
46 last_date=store.LockedVar(None),
47 report=mock.Mock(),
48 worker=None,
a0dcf4e0 49 worker_tag="",
c682bdf4
IB
50 worker_notify=None,
51 worker_started=False,
8f98e46a 52 poll_started_at=None,
c682bdf4
IB
53 callback=None),
54 mock.patch.multiple(portfolio.Computation,
55 computations=portfolio.Computation.computations),
30700830
IB
56 mock.patch.multiple(dbs,
57 redis=None, psql=None)
c682bdf4
IB
58 ]
59 for patcher in self.patchers:
60 patcher.start()
61
62 def tearDown(self):
63 for patcher in self.patchers:
64 patcher.stop()
65 self.wm.stop()
66 super().tearDown()
67