def doAssertAcceptingOneMinuteDateTimeDifference( unitTest, nowDayStr, nowHourStr, nowMinuteStr, nowMonthStr, nowYearStr, requestResultNoEndPrice, expectedPrintResultNoDateTimeNoEndPrice): """ This method verifies that the passed real time request result requestResultNoEndPrice date/time value correspond to now +/- 60 seconds. The purpose is to avoid a test failure due to the fact that the crypto price provider was requested at, say, 11:54:59 (now value) and returns a result with time 11:55. :param unitTest: :param nowDayStr: :param nowHourStr: :param nowMinuteStr: :param nowMonthStr: :param nowYearStr: :param requestResultNoEndPrice: :param expectedPrintResultNoDateTimeNoEndPrice: :return: """ actualDateTimeStr = UtilityForTest.extractDateTimeStr( requestResultNoEndPrice) expectedDateTimeStr = '{}/{}/{} {}:{}'.format(nowDayStr, nowMonthStr, nowYearStr, nowHourStr, nowMinuteStr) actualDateTimeStamp = DateTimeUtil.dateTimeStringToTimeStamp( actualDateTimeStr, 'Europe/Zurich', 'DD/MM/YY HH:mm') expectedDateTimeStamp = DateTimeUtil.dateTimeStringToTimeStamp( expectedDateTimeStr, 'Europe/Zurich', 'DD/MM/YY HH:mm') unitTest.assertAlmostEqual(actualDateTimeStamp, expectedDateTimeStamp, delta=60) unitTest.assertEqual( expectedPrintResultNoDateTimeNoEndPrice, requestResultNoEndPrice.replace(actualDateTimeStr, ''))
def testGetHistoricalPriceAtUTCTimeStampMidOfDay(self): crypto = 'BTC' unit = 'USD' exchange = 'CCCAGG' localTimeZone = 'Europe/Zurich' timeStampLocal = DateTimeUtil.dateTimeStringToTimeStamp("2017/09/30 12:59:59", localTimeZone, "YYYY/MM/DD HH:mm:ss") timeStampUtcNoHHMM = DateTimeUtil.dateTimeStringToTimeStamp("2017/09/30 00:00:00", 'UTC', "YYYY/MM/DD HH:mm:ss") resultData = self.priceRequester.getHistoricalPriceAtUTCTimeStamp(crypto, unit, timeStampLocal, localTimeZone, timeStampUtcNoHHMM, exchange) self.assertEqual(1506729600, resultData.getValue(resultData.RESULT_KEY_PRICE_TIME_STAMP)) priceArrowUTCDateTime = DateTimeUtil.timeStampToArrowLocalDate(resultData.getValue(resultData.RESULT_KEY_PRICE_TIME_STAMP), 'UTC') self.assertEqual(resultData.getValue(resultData.RESULT_KEY_PRICE_TYPE), resultData.PRICE_TYPE_HISTO_DAY) self.assertEqual('30/09/17', priceArrowUTCDateTime.format('DD/MM/YY')) self.assertEqual(4360.62, resultData.getValue(resultData.RESULT_KEY_PRICE)) self.assertEqual(crypto, resultData.getValue(resultData.RESULT_KEY_CRYPTO)) self.assertEqual(unit, resultData.getValue(resultData.RESULT_KEY_UNIT)) self.assertEqual(exchange, resultData.getValue(resultData.RESULT_KEY_EXCHANGE))
def testGetHistoricalPriceAtUTCTimeStampMidOfDayWrongExchange(self): crypto = 'BTC' unit = 'USD' exchange = 'Binance' localTimeZone = 'Europe/Zurich' #time stamp is always UTC ! timeStampLocalMidDay = DateTimeUtil.dateTimeStringToTimeStamp( "2017/09/30 12:59:59", localTimeZone, "YYYY/MM/DD HH:mm:ss") timeStampUtcNoHHMM = DateTimeUtil.dateTimeStringToTimeStamp( "2017/09/30 00:00:00", 'UTC', "YYYY/MM/DD HH:mm:ss") resultData = self.priceRequester.getHistoricalPriceAtUTCTimeStamp( crypto, unit, timeStampLocalMidDay, localTimeZone, timeStampUtcNoHHMM, exchange) self.assertEqual(resultData.getValue(resultData.RESULT_KEY_PRICE_TYPE), resultData.PRICE_TYPE_HISTO_DAY) self.assertEqual( resultData.getValue(resultData.RESULT_KEY_ERROR_MSG), "PROVIDER ERROR - Binance market does not exist for this coin pair (BTC/USD)." ) self.assertEqual(crypto, resultData.getValue(resultData.RESULT_KEY_CRYPTO)) self.assertEqual(unit, resultData.getValue(resultData.RESULT_KEY_UNIT)) self.assertEqual(exchange, resultData.getValue(resultData.RESULT_KEY_EXCHANGE))
def testWinterDateTimeStringToTimeStamp(self): expTimeStamp = 1512061315 dateStr = '2017/11/30 22:31:55' timeStamp = DateTimeUtil.dateTimeStringToTimeStamp(dateStr, 'Asia/Calcutta', US_DATE_TIME_FORMAT_ARROW) self.assertEqual(expTimeStamp, timeStamp) dateStr = '2017/11/30 18:01:55' timeStamp = DateTimeUtil.dateTimeStringToTimeStamp(dateStr, 'Europe/Zurich', US_DATE_TIME_FORMAT_ARROW) self.assertEqual(expTimeStamp, timeStamp)
def testSummerDateTimeStringToTimeStampUS(self): expTimeStamp = 1506787315 dateStr = '30/09/17 21:31:55' timeStamp = DateTimeUtil.dateTimeStringToTimeStamp(dateStr, 'Asia/Calcutta', FR_YY_DATE_TIME_FORMAT_ARROW) self.assertEqual(expTimeStamp, timeStamp) dateStr = '30/09/2017 18:01:55' timeStamp = DateTimeUtil.dateTimeStringToTimeStamp(dateStr, 'Europe/Zurich', FR_DATE_TIME_FORMAT_ARROW) self.assertEqual(expTimeStamp, timeStamp)
def _getCurrentOrHistoRate(self, crypto, dateStr, exchange, fiat): if dateStr is None: resultData = self.priceRequester.getCurrentPrice(crypto, fiat, exchange) else: timeStampLocalTimeZone = DateTimeUtil.dateTimeStringToTimeStamp(dateStr, LOCAL_TIME_ZONE, DATE_FORMAT) timeStampUtcNoHHMM = DateTimeUtil.dateTimeStringToTimeStamp(dateStr, "UTC", DATE_FORMAT) resultData = self.priceRequester.getHistoricalPriceAtUTCTimeStamp(crypto, fiat, timeStampLocalTimeZone, LOCAL_TIME_ZONE, timeStampUtcNoHHMM, exchange) return resultData
def testGetHistoricalPriceAtUTCTimeStampEndOfDay(self): crypto = 'BTC' fiat = 'USD' exchange = 'CCCAGG' timeStampLocal = DateTimeUtil.dateTimeStringToTimeStamp("2017/09/30 23:59:59", 'Europe/Zurich', "YYYY/MM/DD HH:mm:ss") timeStampUtcNoHHMM = DateTimeUtil.dateTimeStringToTimeStamp("2017/09/30 00:00:00", 'UTC', "YYYY/MM/DD HH:mm:ss") resultData = self.priceRequester.getHistoricalPriceAtUTCTimeStamp(crypto, fiat, timeStampLocal, timeStampUtcNoHHMM, exchange) self.assertEqual(1506729600, resultData.getValue(resultData.RESULT_KEY_PRICE_TIME_STAMP)) priceArrowUTCDateTime = DateTimeUtil.timeStampToArrowLocalDate(resultData.getValue(resultData.RESULT_KEY_PRICE_TIME_STAMP), 'UTC') self.assertEqual(resultData.getValue(resultData.RESULT_KEY_PRICE_TYPE), resultData.PRICE_TYPE_HISTO_DAY) self.assertEqual('30/09/17', priceArrowUTCDateTime.format(self.configMgr.dateOnlyFormat)) self.assertEqual(4360.62, resultData.getValue(resultData.RESULT_KEY_PRICE)) self.assertEqual(crypto, resultData.getValue(resultData.RESULT_KEY_CRYPTO)) self.assertEqual(fiat, resultData.getValue(resultData.RESULT_KEY_FIAT)) self.assertEqual(exchange, resultData.getValue(resultData.RESULT_KEY_EXCHANGE))
def testDateTimeStringToTimeStamp(self): absoluteTimeStamp = DateTimeUtil.dateTimeStringToTimeStamp("2017/09/30 02:00:00", 'Europe/Zurich', "YYYY/MM/DD HH:mm:ss") self.assertEqual(1506729600, absoluteTimeStamp)
def testDateStringToTimeStamp(self): absoluteTimeStamp = DateTimeUtil.dateTimeStringToTimeStamp( "2017-09-30", 'Europe/Zurich', "YYYY-MM-DD") absoluteTimeStamp_0_HMS = DateTimeUtil.dateTimeStringToTimeStamp( "2017/09/30 00:00:00", 'Europe/Zurich', "YYYY/MM/DD HH:mm:ss") self.assertEqual(absoluteTimeStamp_0_HMS, absoluteTimeStamp)