def test_get_rates(): with pytest.raises(ValueError): cc = CurrencyConverter("USD", "PKSD").get_rates() with pytest.raises(ValueError): cc = CurrencyConverter("MKTS", "USD").get_rates() with pytest.raises(AttributeError): cc = CurrencyConverter().get_rates() with pytest.raises(ValueError): cc = CurrencyConverter(map_currency=True) cc.from_currency("USD").to_currency(["GBP", "JPY"]).get_rates() cc = CurrencyConverter("USD", "JPY") assert isinstance(cc.get_rates(), dict) assert isinstance(cc.get_rates(True), str)
def index(input_currency, amount, output_currency=None): error_msg = {} ######################## # input currency check # ######################## # check if input currency is in currency list if input_currency not in CurrencyConverter.currency_code\ and input_currency not in CurrencyConverter.currency_symbol: error_msg['input_currency'] = "please choose input currency from this list {}"\ .format(CurrencyConverter.currency_code) ################ # amount check # ################ # check if amount is float if not amount.replace('.', '', 1).isdigit(): error_msg['amount'] = "amount should be float {}{}".format( amount.isdigit(), amount) else: amount = float(amount) ######################### # output currency check # ######################### # check if output currency is in currency list if output_currency and output_currency not in CurrencyConverter.currency_code\ and output_currency not in CurrencyConverter.currency_symbol: error_msg['output_currency'] = "please choose output currency from this list {}"\ .format(CurrencyConverter.currency_code) # return error message if input is invalid if len(error_msg) > 0: return jsonify({'Error': error_msg}) else: # get currency rate rates = CurrencyConverter.get_rates(input_currency, output_currency) # generate output dictionary results = CurrencyConverter.generate_results(amount, rates) # output result in json return jsonify(results)
else: amount = float(args.amount) ######################################## # validation check for output currency # ######################################## # check if output currency is in currency list if args.output_currency and args.output_currency not in CurrencyConverter.currency_code\ and args.output_currency not in CurrencyConverter.currency_symbol: error_msg += "\n--output_currency: please choose output currency from this list {}"\ .format(CurrencyConverter.currency_code) else: # convert output currency to code if output currency is symbol output_currency = CurrencyConverter.currency_symbol[args.output_currency]\ if args.output_currency in CurrencyConverter.currency_symbol else args.output_currency ###################################### # interrupt if there is invalid input # ###################################### if error_msg is not "": parser.error(error_msg) # get currency rate rates = CurrencyConverter.get_rates(input_currency, output_currency) # generate output dictionary generated_results = CurrencyConverter.generate_results(amount, rates) # output result in json print(json.dumps(generated_results))