1+ import datetime
12from unittest import TestCase
23from forex_python .converter import CurrencyRates
4+ from forex_python .converter import RatesNotAvailableError
35
46
5- class TestBase (TestCase ):
6- def setUp (self ):
7- c = CurrencyRates ()
8-
9-
10- class TestGetRates (TestBase ):
7+ class TestGetRates (TestCase ):
118 """
129 Test get_rates with valid(ex: USD) and invalid(ex: XYZ) currency code
1310 """
11+ def setUp (self ):
12+ self .c = CurrencyRates ()
13+
1414 def test_get_rates_valid_code (self ):
15- all_rates = c .get_rates ('USD' )
15+ all_rates = self . c .get_rates ('USD' )
1616
1717 # Check if return value of get_rates dictionary
1818 self .assertTrue (isinstance (all_rates , dict ))
@@ -23,46 +23,68 @@ def test_get_rates_valid_code(self):
2323 # Test one rate in returned dict is float value
2424 self .assertTrue (isinstance (all_rates .get ('INR' ), float ))
2525
26- def test_get_rates_invalid_code (self ):
27- all_rates = c .get_rates ('XYZ' )
26+ def test_get_rates_with_date (self ):
27+ date_obj = datetime .datetime .strptime ('2010-05-10' , "%Y-%m-%d" ).date ()
28+ all_rates = self .c .get_rates ('USD' , date_obj )
2829
2930 # Check if return value of get_rates dictionary
3031 self .assertTrue (isinstance (all_rates , dict ))
3132
32- # Test no values in dict(empty dict)
33- self .assertFalse (len (all_rates .keys ()))
33+ # Test at least one rate value returned
34+ self .assertTrue (len (all_rates .keys ()))
3435
35- # Test one rate in returned dict is not float value
36- self .assertFalse (isinstance (all_rates .get ('INR' ), float ))
36+ # Test one rate in returned dict is float value
37+ self .assertTrue (isinstance (all_rates .get ('INR' ), float ))
38+
39+ def test_get_rates_invalid_code (self ):
40+ self .assertRaises (RatesNotAvailableError , self .c .get_rates , 'XYZ' )
3741
3842
39- class TestGetRate (TestBase ):
43+ class TestGetRate (TestCase ):
4044 """
4145 Test get_rate function using valid and invalid currency codes
4246 """
47+ def setUp (self ):
48+ self .c = CurrencyRates ()
4349
4450 def test_get_rate_with_valid_codes (self ):
45- rate = c .get_rate (self , 'USD' , 'INR' )
51+ rate = self .c .get_rate ('USD' , 'INR' )
52+
53+ # check if return value is float
54+ self .assertTrue (isinstance (rate , float ))
55+
56+ def test_get_rate_with_date (self ):
57+ date_obj = datetime .datetime .strptime ('2010-05-10' , "%Y-%m-%d" ).date ()
58+ rate = self .c .get_rate ('USD' , 'INR' , date_obj )
4659
4760 # check if return value is float
4861 self .assertTrue (isinstance (rate , float ))
4962
5063 def test_get_rate_with_invalid_codes (self ):
5164 # raise exception for invalid currency codes
52- self .assertRaises (RatesNotAvailableError , c .get_rate ( self , 'ABCD' , 'XYZ' ) )
65+ self .assertRaises (RatesNotAvailableError , self . c .get_rate , 'ABCD' , 'XYZ' )
5366
5467
55- class TestAmountConvert (TestBase ):
68+ class TestAmountConvert (TestCase ):
5669 """
5770 test amount conversion from one currency to other
5871 """
72+ def setUp (self ):
73+ self .c = CurrencyRates ()
5974
6075 def test_amount_convert_valid_currency (self ):
61- amount = c .convert ('USD' , 'INR' , 10 )
76+ amount = self . c .convert ('USD' , 'INR' , 10 )
6277
6378 # test if amount returned in float
6479 self .assertTrue (isinstance (amount , float ))
6580
66- def test_amount_convert_valid_currency (self ):
81+ def test_amount_convert_date (self ):
82+ date_obj = datetime .datetime .strptime ('2010-05-10' , "%Y-%m-%d" ).date ()
83+ amount = self .c .convert ('USD' , 'INR' , 10 , date_obj )
84+
85+ # test if amount returned in float
86+ self .assertTrue (isinstance (amount , float ))
87+
88+ def test_amount_convert_invalid_currency (self ):
6789 # test if amount returned in float
68- self .assertRaises (RateNotFoundError , c .convert ( 'ABC, ' XYZ ', 10 ) )
90+ self .assertRaises (RatesNotAvailableError , self . c .convert , 'ABC' , 'XYZ' , 10 )
0 commit comments