Exemplo n.º 1
0
def currency_converter():
    currency_from_id = request.args.get('from', 'USD')
    currency_to_id = request.args.get('to', 'BRL')
    amount = request.args.get('amount', 1, type=float)

    if amount < 0:
        amount = amount * -1

    currency_from = Currencies.get(currency_from_id)
    currency_to = Currencies.get(currency_to_id)

    if not currency_from or not currency_to:
        response = {}
        status = 404
    else:
        value = round(amount / currency_from.rate * currency_to.rate, 2)

        response = {
            'from': currency_from_id,
            'to': currency_to_id,
            'amount': amount,
            'value': value
        }

        status = 200

    return Response(json.dumps(response),
                    status=status,
                    mimetype='application/json')
Exemplo n.º 2
0
    def test_create_should_save_and_return_new_currency(self):
        created, currency = Currencies.create('EUR')

        redis_currency = Redis.hget('currencies', 'EUR')

        self.assertTrue(created)
        self.assertEqual(currency.currency_id, 'EUR')
        self.assertEqual(currency.rate, 1.00)
        self.assertTrue(redis_currency)
Exemplo n.º 3
0
    def test_create_should_return_none_when_already_exists(self):
        created, currency = Currencies.create('USD')

        self.assertFalse(created)
        self.assertEqual(currency.currency_id, 'USD')
        self.assertEqual(currency.rate, 1.00)
Exemplo n.º 4
0
    def test_get_should_return_none_when_not_exists_rate(self):
        Redis.hset('currencies', 'INVALID', 1)
        currency = Currencies.get('INVALID')

        self.assertIsNone(currency)
Exemplo n.º 5
0
    def test_get_should_return_none_when_not_exists_currency(self):
        currency = Currencies.get('EUR')

        self.assertIsNone(currency)
Exemplo n.º 6
0
    def test_get_should_return_selected_currency(self):
        currency = Currencies.get('USD')

        self.assertEqual(currency.currency_id, 'USD')
        self.assertEqual(currency.rate, 1.00)
Exemplo n.º 7
0
    def test_all_should_return_all_currencies(self):
        currencies = Currencies.all()

        self.assertEqual(len(currencies), 2)
        self.assertEqual(currencies[0].currency_id, 'USD')
        self.assertEqual(currencies[0].rate, 1.00)