Beispiel #1
0
 def _test_get_latest_price(self):
     response = MockResponse(
         textwrap.dedent("""
         {"quoteResponse":
          {"error": null,
           "result": [{"esgPopulated": false,
                       "exchange": "TOR",
                       "exchangeDataDelayedBy": 15,
                       "exchangeTimezoneName": "America/Toronto",
                       "exchangeTimezoneShortName": "EDT",
                       "fullExchangeName": "Toronto",
                       "gmtOffSetMilliseconds": -14400000,
                       "language": "en-US",
                       "market": "ca_market",
                       "marketState": "CLOSED",
                       "quoteType": "ETF",
                       "regularMarketPrice": 29.99,
                       "regularMarketTime": 1522353589,
                       "sourceInterval": 15,
                       "symbol": "XSP.TO",
                       "tradeable": false}]}}
         """))
     with mock.patch('requests.get', return_value=response):
         srcprice = yahoo.Source().get_latest_price('XSP.TO')
     self.assertTrue(isinstance(srcprice.price, Decimal))
     self.assertEqual(D('29.99'), srcprice.price)
     timezone = datetime.timezone(datetime.timedelta(hours=-4),
                                  'America/Toronto')
     self.assertEqual(
         datetime.datetime(2018, 3, 29, 15, 59, 49, tzinfo=timezone),
         srcprice.time)
     self.assertEqual('CAD', srcprice.quote_currency)
Beispiel #2
0
 def _test_get_latest_price(self):
     response = MockResponse(
         {'quoteResponse':
          {'error': None,
           'result': [{'esgPopulated': False,
                       'exchange': 'TOR',
                       'exchangeDataDelayedBy': 15,
                       'exchangeTimezoneName': 'America/Toronto',
                       'exchangeTimezoneShortName': 'EDT',
                       'fullExchangeName': 'Toronto',
                       'gmtOffSetMilliseconds': -14400000,
                       'language': 'en-US',
                       'market': 'ca_market',
                       'marketState': 'CLOSED',
                       'quoteType': 'ETF',
                       'regularMarketPrice': 29.99,
                       'regularMarketTime': 1522353589,
                       'sourceInterval': 15,
                       'symbol': 'XSP.TO',
                       'tradeable': False}]}})
     with mock.patch('requests.get', return_value=response):
         srcprice = yahoo.Source().get_latest_price('XSP.TO')
     self.assertTrue(isinstance(srcprice.price, Decimal))
     self.assertAlmostEqual(D('29.99'), srcprice.price)
     timezone = datetime.timezone(datetime.timedelta(hours=-4), 'America/Toronto')
     self.assertEqual(datetime.datetime(2018, 3, 29, 15, 59, 49, tzinfo=timezone),
                      srcprice.time)
     self.assertEqual('CAD', srcprice.quote_currency)
Beispiel #3
0
 def setUp(self):
     self.fetcher = yahoo.Source()
     self.url_object = mock.MagicMock()
     self.url_object.read = mock.MagicMock()
     self.url_object.getcode = mock.MagicMock(return_value=200)
     mock.patch('urllib.request.urlopen',
                return_value=self.url_object).start()
     self.addCleanup(mock.patch.stopall)
Beispiel #4
0
 def _test_get_historical_price(self):
     response = MockResponse(
         textwrap.dedent("""
         {"chart":
          {"error": null,
           "result": [{"indicators": {"adjclose": [{"adjclose": [29.236251831054688,
                                                                 29.16683006286621,
                                                                 29.196582794189453,
                                                                 29.226333618164062]}],
                                      "quote": [{"close": [29.479999542236328,
                                                           29.40999984741211,
                                                           29.440000534057617,
                                                           29.469999313354492],
                                                 "high": [29.510000228881836,
                                                          29.489999771118164,
                                                          29.469999313354492,
                                                          29.579999923706055],
                                                 "low": [29.34000015258789,
                                                         29.350000381469727,
                                                         29.399999618530273,
                                                         29.43000030517578],
                                                 "open": [29.360000610351562,
                                                          29.43000030517578,
                                                          29.43000030517578,
                                                          29.530000686645508],
                                                 "volume": [160800,
                                                            118700,
                                                            98500,
                                                            227800]}]},
                       "meta": {"chartPreviousClose": 29.25,
                                "currency": "CAD",
                                "currentTradingPeriod": {"post": {"end": 1522702800,
                                                                  "gmtoffset": -14400,
                                                                  "start": 1522699200,
                                                                  "timezone": "EDT"},
                                                         "pre": {"end": 1522675800,
                                                                 "gmtoffset": -14400,
                                                                 "start": 1522670400,
                                                                 "timezone": "EDT"},
                                                         "regular": {"end": 1522699200,
                                                                     "gmtoffset": -14400,
                                                                     "start": 1522675800,
                                                                     "timezone": "EDT"}},
                                "dataGranularity": "1d",
                                "exchangeName": "TOR",
                                "exchangeTimezoneName": "America/Toronto",
                                "firstTradeDate": 1018872000,
                                "gmtoffset": -14400,
                                "instrumentType": "ETF",
                                "symbol": "XSP.TO",
                                "timezone": "EDT",
                                "validRanges": ["1d", "5d", "1mo", "3mo", "6mo", "1y",
                                                "2y", "5y", "10y", "ytd", "max"]},
                       "timestamp": [1509111000,
                                     1509370200,
                                     1509456600,
                                     1509543000]}]}}"""))
     with mock.patch('requests.get', return_value=response):
         srcprice = yahoo.Source().get_historical_price(
             'XSP.TO',
             datetime.datetime(2017, 11, 1, 16, 0, 0, tzinfo=tz.tzutc()))
     self.assertTrue(isinstance(srcprice.price, Decimal))
     self.assertEqual(D('29.469999313354492'), srcprice.price)
     timezone = datetime.timezone(datetime.timedelta(hours=-4),
                                  'America/Toronto')
     self.assertEqual(
         datetime.datetime(2017, 11, 1, 9, 30, tzinfo=timezone),
         srcprice.time)
     self.assertEqual('CAD', srcprice.quote_currency)
Beispiel #5
0
 def _test_get_historical_price(self):
     response = MockResponse(
         {'chart':
          {'error': None,
           'result': [{'indicators': {'adjclose': [{'adjclose': [29.236251831054688,
                                                                 29.16683006286621,
                                                                 29.196582794189453,
                                                                 29.226333618164062]}],
                                      'quote': [{'close': [29.479999542236328,
                                                           29.40999984741211,
                                                           29.440000534057617,
                                                           29.469999313354492],
                                                 'high': [29.510000228881836,
                                                          29.489999771118164,
                                                          29.469999313354492,
                                                          29.579999923706055],
                                                 'low': [29.34000015258789,
                                                         29.350000381469727,
                                                         29.399999618530273,
                                                         29.43000030517578],
                                                 'open': [29.360000610351562,
                                                          29.43000030517578,
                                                          29.43000030517578,
                                                          29.530000686645508],
                                                 'volume': [160800,
                                                            118700,
                                                            98500,
                                                            227800]}]},
                       'meta': {'chartPreviousClose': 29.25,
                                'currency': 'CAD',
                                'currentTradingPeriod': {'post': {'end': 1522702800,
                                                                  'gmtoffset': -14400,
                                                                  'start': 1522699200,
                                                                  'timezone': 'EDT'},
                                                         'pre': {'end': 1522675800,
                                                                 'gmtoffset': -14400,
                                                                 'start': 1522670400,
                                                                 'timezone': 'EDT'},
                                                         'regular': {'end': 1522699200,
                                                                     'gmtoffset': -14400,
                                                                     'start': 1522675800,
                                                                     'timezone': 'EDT'}},
                                'dataGranularity': '1d',
                                'exchangeName': 'TOR',
                                'exchangeTimezoneName': 'America/Toronto',
                                'firstTradeDate': 1018872000,
                                'gmtoffset': -14400,
                                'instrumentType': 'ETF',
                                'symbol': 'XSP.TO',
                                'timezone': 'EDT',
                                'validRanges': ['1d', '5d', '1mo', '3mo', '6mo', '1y',
                                                '2y', '5y', '10y', 'ytd', 'max']},
                       'timestamp': [1509111000,
                                     1509370200,
                                     1509456600,
                                     1509543000]}]}})
     with mock.patch('requests.get', return_value=response):
         srcprice = yahoo.Source().get_historical_price(
             'XSP.TO', datetime.datetime(2017, 11, 1, 16, 0, 0, tzinfo=tz.tzutc()))
     self.assertTrue(isinstance(srcprice.price, Decimal))
     self.assertAlmostEqual(D('29.47'), srcprice.price, 3)
     timezone = datetime.timezone(datetime.timedelta(hours=-4), 'America/Toronto')
     self.assertEqual(datetime.datetime(2017, 11, 1, 9, 30, tzinfo=timezone),
                      srcprice.time)
     self.assertEqual('CAD', srcprice.quote_currency)