def testGetCryptoPriceRealTime(self): now = DateTimeUtil.localNow('Europe/Zurich') crypto = 'BTC' fiat = 'USD' exchange = 'bittrex' day = 0 month = 0 year = 0 hour = 1 minute = 1 resultData = ResultData() nowMinute = now.minute if nowMinute < 10: if nowMinute > 0: nowMinuteStr = '0' + str(nowMinute) else: nowMinuteStr = '00' else: nowMinuteStr = str(nowMinute) nowHour = now.hour if nowHour < 10: if nowHour > 0: nowHourStr = '0' + str(nowHour) else: nowHourStr = '00' else: nowHourStr = str(nowHour) nowDay = now.day if nowDay < 10: nowDayStr = '0' + str(nowDay) else: nowDayStr = str(nowDay) #rt price not provided here ! resultData.setValue(resultData.RESULT_KEY_ERROR_MSG, None) resultData.setValue(resultData.RESULT_KEY_CRYPTO, crypto) resultData.setValue(resultData.RESULT_KEY_FIAT, fiat) resultData.setValue(resultData.RESULT_KEY_EXCHANGE, 'BitTrex') resultData.setValue(resultData.RESULT_KEY_PRICE_TYPE, resultData.PRICE_TYPE_RT) dateTimeString = '{}/{}/{} {}:{}'.format(nowDayStr, now.month, now.year - 2000, nowHourStr, nowMinuteStr) resultData.setValue(resultData.RESULT_KEY_PRICE_DATE_TIME_STRING, dateTimeString) stdout = sys.stdout capturedStdout = StringIO() sys.stdout = capturedStdout self.printer.printDataToConsole(resultData) sys.stdout = stdout self.assertEqual('BTC/USD on BitTrex: {}R \n'.format(dateTimeString), capturedStdout.getvalue())
def testGetCryptoPriceRealTimeWithValueFlag(self): #correspond to command btc usd 0 bittrex -v0.01btc now = DateTimeUtil.localNow('Europe/Zurich') crypto = 'BTC' fiat = 'USD' exchange = 'bittrex' day = 0 month = 0 year = 0 hour = 1 minute = 1 resultData = ResultData() nowMinute = now.minute if nowMinute < 10: if nowMinute > 0: nowMinuteStr = '0' + str(nowMinute) else: nowMinuteStr = '00' else: nowMinuteStr = str(nowMinute) nowHour = now.hour if nowHour < 10: if nowHour > 0: nowHourStr = '0' + str(nowHour) else: nowHourStr = '00' else: nowHourStr = str(nowHour) nowDay = now.day if nowDay < 10: nowDayStr = '0' + str(nowDay) else: nowDayStr = str(nowDay) #rt price not provided here ! resultData.setValue(resultData.RESULT_KEY_ERROR_MSG, None) resultData.setValue(resultData.RESULT_KEY_CRYPTO, crypto) resultData.setValue(resultData.RESULT_KEY_FIAT, fiat) resultData.setValue(resultData.RESULT_KEY_EXCHANGE, 'BitTrex') resultData.setValue(resultData.RESULT_KEY_PRICE_TYPE, resultData.PRICE_TYPE_RT) dateTimeString = '{}/{}/{} {}:{}'.format(nowDayStr, now.month, now.year - 2000, nowHourStr, nowMinuteStr) resultData.setValue(resultData.RESULT_KEY_PRICE_DATE_TIME_STRING, dateTimeString) resultData.setValue(resultData.RESULT_KEY_PRICE_VALUE_CRYPTO, '0.01') resultData.setValue(resultData.RESULT_KEY_PRICE_VALUE_FIAT, '160') resultData.setValue( resultData.RESULT_KEY_INITIAL_COMMAND_PARMS, { 'CRYPTO': 'btc', 'FIAT': 'usd', 'EXCHANGE': 'bittrex', 'DAY': '0', 'MONTH': '0', 'YEAR': '0', 'HOUR': None, 'MINUTE': None, 'DMY': None, 'HM': None, 'PRICE_TYPE': 'REAL_TIME', 'PRICE_VAL_DATA': None, 'PRICE_VAL_AMOUNT': '0.01', 'PRICE_VAL_SYMBOL': 'btc', 'PRICE_VAL_SAVE': False }) stdout = sys.stdout capturedStdout = StringIO() sys.stdout = capturedStdout self.printer.printDataToConsole(resultData) sys.stdout = stdout self.assertEqual( '0.01 BTC/160 USD on BitTrex: {}R \n'.format(dateTimeString), capturedStdout.getvalue()) fullCommandString, fullCommandStrWithOptions, fullCommandStrWithSaveModeOptions = self.printer.getFullCommandString( resultData) self.assertEqual(None, fullCommandStrWithSaveModeOptions) self.assertEqual('btc usd 0 bittrex', fullCommandString)
return match.group(1) return () @staticmethod def removeAllPricesFromCommandValueResult(resultStr): ''' Used to remove multiple prices from RT request results or variable date/time price request results :param resultStr: :return: ''' patternNoWarning = r"(?:[\d\.]*) (\w*/)(?:[\d\.]*) (.*) (?:[\d\.]*)" patternOneWarning = r"(?:[\d\.]*) (\w*/)(?:[\d\.]*) (.*) (?:[\d\.]*(\n.*))" match = re.match(patternOneWarning, resultStr) if match != None: if len(match.groups()) == 3: return match.group(1) + match.group(2) + match.group(3) match = re.match(patternNoWarning, resultStr) if len(match.groups()) == 2: return match.group(1) + match.group(2) else: return () if __name__ == '__main__': now = DateTimeUtil.localNow('Europe/Zurich') nowMonthStr, nowDayStr, nowHourStr, nowMinuteStr = UtilityForTest.getFormattedDateTimeComponentsForArrowDateTimeObj(now) print("{}/{} {}:{}".format(nowDayStr, nowMonthStr, nowHourStr, nowMinuteStr))