def test(self):
        try:
            fullpath = os.path.join(
                os.path.split(__file__)[0], 'res', 'testcases', fname)
            inputs = os.listdir(os.path.join(fullpath, 'input'))
            inputs = map(lambda x: os.path.join(fullpath, 'input', x), inputs)
            inputs = sorted(inputs)

            expected = os.path.join(fullpath, 'expected.json')
            fhandle, got = tempfile.mkstemp()

            c = Converter()
            c.convert(inputs, got)

            with open(expected, 'r') as exf:
                exj = json.load(exf)
            with open(got, 'r') as gotf:
                gotj = json.load(gotf)

            self.assertEqual(exj['user_list_size'], gotj['user_list_size'])
            self.assertListEqual(exj['user_list'], gotj['user_list'])
            self.assertDictEqual(exj, gotj)

        finally:
            os.close(fhandle)
            os.remove(got)
def main():
    '''
    Main method, executes program.
    '''
    def get_args():
        '''
        Gets arguments from commandline.

        Arguments consist of input sources, output destination, and missed files (error) destination.
        '''
        parser = argparse.ArgumentParser(
            description=
            'Convert users from csv to json format, as described by schema.')
        parser.add_argument('--input',
                            nargs='+',
                            required=True,
                            help='One or more csv files of users.')
        parser.add_argument('--output',
                            required=True,
                            help='Output file destination.')

        return parser.parse_args()

    args = get_args()
    conv = Converter()
    conv.convert(args.input, args.output)
示例#3
0
def currency_converter():
    if request.method == "GET":
        input_currency = request.args.get("input_currency", type=str)
        amount = request.args.get("amount", type=float)
        output_currency = request.args.get("output_currency", type=str)
        logging.info(f"{input_currency} - {type(input_currency)}")
        logging.info(f"{output_currency}  - {type(output_currency)}")
        logging.info(f"{amount}  - {type(amount)}")
        if input_currency and amount:
            converter = Converter(
                input_currency=input_currency,
                amount=amount,
                output_currency=output_currency,
            )
            response, status_code = converter.convert()
            response = (
                jsonify(response) if status_code == 200 else jsonify(message=response)
            )
            return response, status_code
        else:
            return (
                jsonify(message="Missing required params or wrong type of params."),
                400,
            )
    else:
        return jsonify(message="Unsupported HTTP method."), 400
示例#4
0
 def test_one_to_one(self):
     with self.rates_mock as mock:
         mock.return_value = self.test_rates
         converter = Converter(input_currency="AUD", amount=1, output_currency="CZK")
         result, status_code = converter.convert()
         self.assertEqual(result["input"]["currency"], "AUD")
         self.assertEqual(result["output"]["CZK"], 15.65)
         self.assertEqual(status_code, 200)
class ConverterTest(unittest.TestCase):


    def test_invalid_convert(self):
        self.converter = Converter()
        self.assertEquals(self.converter.convert('100dh####sb', 'Revenuedd#$@$#%#^EUR100 billion (2018)'),None)

    if __name__ == '__main__':
        unittest.main()
示例#6
0
def start():
    crawler = Crawler()
    crawler_results = crawler.crawl()
    for crawler_result in crawler_results:
        attribute_string = crawler_result.get('attribute_string')
        attribute_usd_price = crawler_result.get('attribute_usd_price')
        attribute = crawler_result.get('attribute')
        converter = Converter()
        print attribute,converter.convert(attribute_usd_price,attribute_string)
示例#7
0
def convert(amount, input_currency, output_currency):
    try:
        converter = Converter(amount, input_currency, output_currency)
        if converter.check_parameters():
            print(json.dumps(converter.convert(), sort_keys=True, indent=4))
        else:
            print("Wrong parameters.")
    except FileNotFoundError:
        print("Cannot find file with currency symbols.")
        exit(-1)
示例#8
0
 def test_empty_rates_storage(self):
     with self.rates_mock as mock:
         mock.return_value = {}
         converter = Converter(input_currency="CZK", amount=1)
         result, status_code = converter.convert()
         self.assertEqual(
             result,
             "Missing currency exchange rates. Please try to update the storage.",
         )
         self.assertEqual(status_code, 400)
示例#9
0
 def test_non_valic_code(self):
     with self.rates_mock as mock:
         mock.return_value = self.test_rates
         converter = Converter(input_currency="XYZ", amount=1)
         result, status_code = converter.convert()
         self.assertEqual(
             result,
             "Unsupported currency symbol/code! Please check inserted values with supported values help and try again!",
         )
         self.assertEqual(status_code, 400)
示例#10
0
 def test_many_to_one(self):
     with self.rates_mock as mock:
         mock.return_value = self.test_rates
         converter = Converter(input_currency="$", amount=1, output_currency="US$")
         result, status_code = converter.convert()
         self.assertEqual(
             result,
             "Too many input currency options! Please insert a currency code/symbol matching the unique currency.",
         )
         self.assertEqual(status_code, 400)
示例#11
0
 def test_symbol_to_symbol(self):
     with self.rates_mock as mock:
         mock.return_value = self.test_rates
         converter = Converter(input_currency="£", amount=1, output_currency="zł")
         result, status_code = converter.convert()
         self.assertEqual(result["input"]["currency"], "GBP")
         self.assertEqual(result["input"]["amount"], 1)
         self.assertEqual(len(result["output"]), 1)
         self.assertEqual(list(result["output"].keys())[0], "PLN")
         self.assertEqual(list(result["output"].values())[0], 4.94)
         self.assertEqual(status_code, 200)
示例#12
0
def convert(amount, input_currency, output_currency=""):
    try:
        converter = Converter(amount, input_currency, output_currency)
        if converter.check_parameters():
            return converter.convert()
        else:
            return problem(400, "Bad Request", "Wrong parameters",
                           "about:blank")
    except FileNotFoundError:
        return problem(400, "Error", "Cannot find file with currency symbols.",
                       "about:blank")