예제 #1
0
    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, ''))
예제 #2
0
	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))
예제 #3
0
    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))
예제 #4
0
    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)
예제 #5
0
    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)
예제 #6
0
	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
예제 #7
0
 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))
예제 #8
0
 def testDateTimeStringToTimeStamp(self):
     absoluteTimeStamp = DateTimeUtil.dateTimeStringToTimeStamp("2017/09/30 02:00:00", 'Europe/Zurich',
                                                                "YYYY/MM/DD HH:mm:ss")
     self.assertEqual(1506729600, absoluteTimeStamp)
예제 #9
0
 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)