Skip to content

Commit fa78eed

Browse files
author
ravi
committed
Added test cases for CurrencyRates class
1 parent ddc9707 commit fa78eed

5 files changed

Lines changed: 68 additions & 7 deletions

File tree

forex_python/__init__.py

Whitespace-only changes.
Lines changed: 0 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -2,13 +2,6 @@
22
import datetime
33

44

5-
class RateNotFoundError(Exception):
6-
"""
7-
Custom exception when conversion rate not found for given Country
8-
"""
9-
pass
10-
11-
125
class RatesNotAvailableError(Exception):
136
"""
147
Custome Exception when http://fixer.io/ is Down are not available for currency rates

tests/__init__.py

Whitespace-only changes.

tests/test.py

Lines changed: 68 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,68 @@
1+
from unittest import TestCase
2+
from forex_python.converter import CurrencyRates
3+
4+
5+
class TestBase(TestCase):
6+
def setUp(self):
7+
c = CurrencyRates()
8+
9+
10+
class TestGetRates(TestBase):
11+
"""
12+
Test get_rates with valid(ex: USD) and invalid(ex: XYZ) currency code
13+
"""
14+
def test_get_rates_valid_code(self):
15+
all_rates = c.get_rates('USD')
16+
17+
# Check if return value of get_rates dictionary
18+
self.assertTrue(isinstance(all_rates, dict))
19+
20+
# Test at least one rate value returned
21+
self.assertTrue(len(all_rates.keys()))
22+
23+
# Test one rate in returned dict is float value
24+
self.assertTrue(isinstance(all_rates.get('INR'), float))
25+
26+
def test_get_rates_invalid_code(self):
27+
all_rates = c.get_rates('XYZ')
28+
29+
# Check if return value of get_rates dictionary
30+
self.assertTrue(isinstance(all_rates, dict))
31+
32+
# Test no values in dict(empty dict)
33+
self.assertFalse(len(all_rates.keys()))
34+
35+
# Test one rate in returned dict is not float value
36+
self.assertFalse(isinstance(all_rates.get('INR'), float))
37+
38+
39+
class TestGetRate(TestBase):
40+
"""
41+
Test get_rate function using valid and invalid currency codes
42+
"""
43+
44+
def test_get_rate_with_valid_codes(self):
45+
rate = c.get_rate(self, 'USD', 'INR')
46+
47+
# check if return value is float
48+
self.assertTrue(isinstance(rate, float))
49+
50+
def test_get_rate_with_invalid_codes(self):
51+
# raise exception for invalid currency codes
52+
self.assertRaises(RatesNotAvailableError, c.get_rate(self, 'ABCD', 'XYZ'))
53+
54+
55+
class TestAmountConvert(TestBase):
56+
"""
57+
test amount conversion from one currency to other
58+
"""
59+
60+
def test_amount_convert_valid_currency(self):
61+
amount = c.convert('USD', 'INR', 10)
62+
63+
# test if amount returned in float
64+
self.assertTrue(isinstance(amount, float))
65+
66+
def test_amount_convert_valid_currency(self):
67+
# test if amount returned in float
68+
self.assertRaises(RateNotFoundError, c.convert('ABC, 'XYZ', 10))

0 commit comments

Comments
 (0)