Skip to content

Commit 2e6bb99

Browse files
committed
removed class instance creation
1 parent 341af83 commit 2e6bb99

4 files changed

Lines changed: 63 additions & 50 deletions

File tree

forex_python/bitcoin.py

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -135,3 +135,14 @@ def get_symbol(self):
135135
Here is Unicode symbol for bit coin
136136
"""
137137
return "\u0E3F"
138+
139+
_Btc_Converter = BtcConverter()
140+
141+
get_btc_symbol = _Btc_Converter.get_symbol
142+
convert_btc_to_cur_on = _Btc_Converter.convert_btc_to_cur_on
143+
convert_to_btc_on = _Btc_Converter.convert_to_btc_on
144+
convert_btc_to_cur = _Btc_Converter.convert_btc_to_cur
145+
convert_to_btc = _Btc_Converter.convert_to_btc
146+
get_latest_price = _Btc_Converter.get_latest_price
147+
get_previous_price = _Btc_Converter.get_previous_price
148+
get_previous_price_list = _Btc_Converter.get_previous_price_list

forex_python/converter.py

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -65,6 +65,13 @@ def convert(self, base_cur, dest_cur, amount, date_obj=None):
6565
raise RatesNotAvailableError("Currency Rates Source Not Ready")
6666

6767

68+
_CURRENCY_FORMATTER = CurrencyRates()
69+
70+
get_rates = _CURRENCY_FORMATTER.get_rates
71+
get_rate = _CURRENCY_FORMATTER.get_rate
72+
convert = _CURRENCY_FORMATTER.convert
73+
74+
6875
class CurrencyCodes:
6976

7077
def __init__(self):
@@ -88,3 +95,9 @@ def get_currency_name(self, currency_code):
8895
if currency_dict:
8996
return currency_dict.get('name')
9097
return None
98+
99+
_CURRENCY_CODES = CurrencyCodes()
100+
101+
102+
get_symbol = _CURRENCY_CODES.get_symbol
103+
get_currency_name = _CURRENCY_CODES.get_currency_name

tests/test.py

Lines changed: 15 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,15 @@
11
import datetime
22
from unittest import TestCase
3-
from forex_python.converter import CurrencyRates, CurrencyCodes, RatesNotAvailableError
3+
from forex_python.converter import get_rates, get_rate, convert, get_symbol, get_currency_name, RatesNotAvailableError
44

55

66
class TestGetRates(TestCase):
77
"""
88
Test get_rates with valid(ex: USD) and invalid(ex: XYZ) currency code
99
"""
10-
def setUp(self):
11-
self.c = CurrencyRates()
1210

1311
def test_get_rates_valid_code(self):
14-
all_rates = self.c.get_rates('USD')
12+
all_rates = get_rates('USD')
1513

1614
# Check if return value of get_rates dictionary
1715
self.assertTrue(isinstance(all_rates, dict))
@@ -24,7 +22,7 @@ def test_get_rates_valid_code(self):
2422

2523
def test_get_rates_with_date(self):
2624
date_obj = datetime.datetime.strptime('2010-05-10', "%Y-%m-%d").date()
27-
all_rates = self.c.get_rates('USD', date_obj)
25+
all_rates = get_rates('USD', date_obj)
2826

2927
# Check if return value of get_rates dictionary
3028
self.assertTrue(isinstance(all_rates, dict))
@@ -34,85 +32,76 @@ def test_get_rates_with_date(self):
3432

3533
# Test one rate in returned dict is float value
3634
self.assertTrue(isinstance(all_rates.get('INR'), float))
37-
35+
3836
def test_get_rates_invalid_code(self):
39-
self.assertRaises(RatesNotAvailableError, self.c.get_rates, 'XYZ')
37+
self.assertRaises(RatesNotAvailableError, get_rates, 'XYZ')
4038

4139

4240
class TestGetRate(TestCase):
4341
"""
4442
Test get_rate function using valid and invalid currency codes
4543
"""
46-
def setUp(self):
47-
self.c = CurrencyRates()
4844

4945
def test_get_rate_with_valid_codes(self):
50-
rate = self.c.get_rate('USD', 'INR')
46+
rate = get_rate('USD', 'INR')
5147

5248
# check if return value is float
5349
self.assertTrue(isinstance(rate, float))
5450

5551
def test_get_rate_with_date(self):
5652
date_obj = datetime.datetime.strptime('2010-05-10', "%Y-%m-%d").date()
57-
rate = self.c.get_rate('USD', 'INR', date_obj)
53+
rate = get_rate('USD', 'INR', date_obj)
5854

5955
# check if return value is float
6056
self.assertTrue(isinstance(rate, float))
6157

6258
def test_get_rate_with_invalid_codes(self):
6359
# raise exception for invalid currency codes
64-
self.assertRaises(RatesNotAvailableError, self.c.get_rate, 'ABCD', 'XYZ')
60+
self.assertRaises(RatesNotAvailableError, get_rate, 'ABCD', 'XYZ')
6561

6662

6763
class TestAmountConvert(TestCase):
6864
"""
6965
test amount conversion from one currency to other
7066
"""
71-
def setUp(self):
72-
self.c = CurrencyRates()
7367

7468
def test_amount_convert_valid_currency(self):
75-
amount = self.c.convert('USD', 'INR', 10)
69+
amount = convert('USD', 'INR', 10)
7670

7771
# test if amount returned in float
7872
self.assertTrue(isinstance(amount, float))
7973

8074
def test_amount_convert_date(self):
8175
date_obj = datetime.datetime.strptime('2010-05-10', "%Y-%m-%d").date()
82-
amount = self.c.convert('USD', 'INR', 10, date_obj)
76+
amount = convert('USD', 'INR', 10, date_obj)
8377

8478
# test if amount returned in float
8579
self.assertTrue(isinstance(amount, float))
8680

8781
def test_amount_convert_invalid_currency(self):
8882
# test if amount returned in float
89-
self.assertRaises(RatesNotAvailableError, self.c.convert, 'ABC', 'XYZ', 10)
83+
self.assertRaises(RatesNotAvailableError, convert, 'ABC', 'XYZ', 10)
9084

9185

9286
class TestCurrencySymbol(TestCase):
9387
"""
9488
test currency symbols from currency codes
9589
"""
96-
def setUp(self):
97-
self.c = CurrencyCodes()
9890

9991
def test_with_valid_currency_code(self):
100-
self.assertEqual(str(self.c.get_symbol('USD')), 'US$')
92+
self.assertEqual(str(get_symbol('USD')), 'US$')
10193

10294
def test_with_invalid_currency_code(self):
103-
self.assertFalse(self.c.get_symbol('XYZ'))
95+
self.assertFalse(get_symbol('XYZ'))
10496

10597

10698
class TestCurrencyName(TestCase):
10799
"""
108100
test currency name from currency codes
109101
"""
110-
def setUp(self):
111-
self.c = CurrencyCodes()
112102

113103
def test_with_valid_currency_code(self):
114-
self.assertEqual(str(self.c.get_currency_name('USD')), 'United States dollar')
104+
self.assertEqual(str(get_currency_name('USD')), 'United States dollar')
115105

116106
def test_with_invalid_currency_code(self):
117-
self.assertFalse(self.c.get_currency_name('XYZ'))
118-
107+
self.assertFalse(get_currency_name('XYZ'))

tests/test_bitcoin.py

Lines changed: 24 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import datetime
22
from unittest import TestCase
3-
from forex_python.bitcoin import BtcConverter
3+
from forex_python.bitcoin import *
44

55

66
class TestCommon(TestCase):
@@ -11,112 +11,112 @@ def setUp(self):
1111
self.b = BtcConverter()
1212

1313

14-
class TestLatestPrice(TestCommon):
14+
class TestLatestPrice(TestCase):
1515
"""
1616
Test get latest price using currency code
1717
"""
1818
def test_latest_price_valid_currency(self):
19-
price = self.b.get_latest_price('USD')
19+
price = get_latest_price('USD')
2020
self.assertEqual(type(price), float)
2121

2222
def test_latest_price_invalid_currency(self):
23-
price = self.b.get_latest_price('XYZ')
23+
price = get_latest_price('XYZ')
2424
self.assertFalse(price)
2525

2626

27-
class TestPreviousPrice(TestCommon):
27+
class TestPreviousPrice(TestCase):
2828
"""
2929
Test Price with date input
3030
"""
3131
def test_previous_price_valid_currency(self):
3232
date_obj = datetime.datetime.today() - datetime.timedelta(days=15)
33-
price = self.b.get_previous_price('USD', date_obj)
33+
price = get_previous_price('USD', date_obj)
3434
self.assertEqual(type(price), float)
3535

3636
def test_previous_price_invalid_currency(self):
3737
date_obj = datetime.datetime.today() - datetime.timedelta(days=15)
38-
price = self.b.get_previous_price('XYZ', date_obj)
38+
price = get_previous_price('XYZ', date_obj)
3939
self.assertFalse(price)
4040

4141

42-
class TestPreviousPriceList(TestCommon):
42+
class TestPreviousPriceList(TestCase):
4343
"""
4444
Test previous price list for a currency
4545
"""
4646
def test_previous_price_list_with_valid_currency(self):
4747
start_date = datetime.datetime.today() - datetime.timedelta(days=15)
4848
end_date = datetime.datetime.today()
49-
price_list = self.b.get_previous_price_list('USD', start_date, end_date)
49+
price_list = get_previous_price_list('USD', start_date, end_date)
5050
self.assertTrue(price_list)
5151
self.assertEqual(type(price_list), dict)
5252

5353
def test_previous_price_list_with_invalid_currency(self):
5454
start_date = datetime.datetime.today() - datetime.timedelta(days=15)
5555
end_date = datetime.datetime.today()
56-
price_list = self.b.get_previous_price_list('XYZ', start_date, end_date)
56+
price_list = get_previous_price_list('XYZ', start_date, end_date)
5757
self.assertFalse(price_list)
5858
self.assertEqual(type(price_list), dict)
5959

6060

61-
class TestConvertBtc(TestCommon):
61+
class TestConvertBtc(TestCase):
6262
"""
6363
Test Converting amount to Bit coins
6464
"""
6565
def test_convet_to_btc_with_valid_currency(self):
66-
coins = self.b.convert_to_btc(250, 'USD')
66+
coins = convert_to_btc(250, 'USD')
6767
self.assertEqual(type(coins), float)
6868

6969
def test_convet_to_btc_with_invalid_currency(self):
70-
coins = self.b.convert_to_btc(250, 'XYZ')
70+
coins = convert_to_btc(250, 'XYZ')
7171
self.assertFalse(coins)
7272

7373

74-
class TestConvertBtcToCur(TestCommon):
74+
class TestConvertBtcToCur(TestCase):
7575
"""
7676
Convert Bit Coins to Valid Currency amount
7777
"""
7878
def test_convert_btc_to_cur_valid_currency(self):
79-
amount = self.b.convert_btc_to_cur(2, 'USD')
79+
amount = convert_btc_to_cur(2, 'USD')
8080
self.assertEqual(type(amount), float)
8181

8282
def test_convert_btc_to_cur_invalid_currency(self):
83-
amount = self.b.convert_btc_to_cur(2, 'XYZ')
83+
amount = convert_btc_to_cur(2, 'XYZ')
8484
self.assertFalse(amount)
8585

8686

87-
class TestConvertToBtcOn(TestCommon):
87+
class TestConvertToBtcOn(TestCase):
8888
"""
8989
Convert To bit coin based on previous dates
9090
"""
9191
def test_convert_to_btc_on_with_valid_currency(self):
9292
date_obj = datetime.datetime.today() - datetime.timedelta(days=15)
93-
coins = self.b.convert_to_btc_on(300, 'USD', date_obj)
93+
coins = convert_to_btc_on(300, 'USD', date_obj)
9494
self.assertEqual(type(coins), float)
9595

9696
def test_convert_to_btc_on_with_invalid_currency(self):
9797
date_obj = datetime.datetime.today() - datetime.timedelta(days=15)
98-
coins = self.b.convert_to_btc_on(300, 'XYZ', date_obj)
98+
coins = convert_to_btc_on(300, 'XYZ', date_obj)
9999
self.assertFalse(coins)
100100

101101

102-
class TestConvertBtcToCurOn(TestCommon):
102+
class TestConvertBtcToCurOn(TestCase):
103103
"""
104104
Convert BitCoins to valid Currency
105105
"""
106106
def test_convert_to_btc_on_with_valid_currency(self):
107107
date_obj = datetime.datetime.today() - datetime.timedelta(days=15)
108-
amount = self.b.convert_btc_to_cur_on(3, 'USD', date_obj)
108+
amount = convert_btc_to_cur_on(3, 'USD', date_obj)
109109
self.assertEqual(type(amount), float)
110110

111111
def test_convert_to_btc_on_with_invalid_currency(self):
112112
date_obj = datetime.datetime.today() - datetime.timedelta(days=15)
113-
amount = self.b.convert_btc_to_cur_on(3, 'XYZ', date_obj)
113+
amount = convert_btc_to_cur_on(3, 'XYZ', date_obj)
114114
self.assertFalse(amount)
115115

116116

117-
class TestBitCoinSymbol(TestCommon):
117+
class TestBitCoinSymbol(TestCase):
118118
"""
119119
Bit Coin symbol
120120
"""
121121
def test_bitcoin_symbol(self):
122-
self.assertEqual(self.b.get_symbol(), "\u0E3F")
122+
self.assertEqual(get_btc_symbol(), "\u0E3F")

0 commit comments

Comments
 (0)