Coverage for tests/test_currency_manager.py: 100%

33 statements  

« prev     ^ index     » next       coverage.py v7.6.1, created at 2024-11-30 23:17 +0000

1import pytest 

2from unittest.mock import patch # Añade esta línea 

3from decimal import Decimal 

4 

5from classes.currency_manager import CurrencyManager 

6from config.database import Database 

7 

8@pytest.fixture 

9def mock_conversion_rates(): 

10 return { 

11 "USD": { 

12 "EUR": Decimal("0.9"), 

13 "JPY": Decimal("110.5") 

14 }, 

15 "EUR": { 

16 "USD": Decimal("1.1"), 

17 "JPY": Decimal("123.0") 

18 } 

19 } 

20 # Conversión de moneda exitosa (USD a EUR) 

21def test_convert_currency_success(mock_conversion_rates): 

22 with patch.object(Database, 'conversion_rates', return_value=mock_conversion_rates): 

23 tasa_conversion, monto_convertido = CurrencyManager.convert_currency(100, "USD", "EUR") 

24 assert tasa_conversion == Decimal("0.9") 

25 assert monto_convertido == Decimal("90.00") 

26 #Conversión de moneda con divisa de origen desconocida. 

27def test_convert_currency_unknown_origin_currency(mock_conversion_rates): 

28 with patch.object(Database, 'conversion_rates', return_value=mock_conversion_rates): 

29 tasa_conversion, monto_convertido = CurrencyManager.convert_currency(100, "GBP", "EUR") 

30 assert tasa_conversion is None 

31 assert monto_convertido is None 

32 # Conversión de moneda con divisa de destino desconocida. 

33def test_convert_currency_unknown_destination_currency(mock_conversion_rates): 

34 with patch.object(Database, 'conversion_rates', return_value=mock_conversion_rates): 

35 tasa_conversion, monto_convertido = CurrencyManager.convert_currency(100, "USD", "CNY") 

36 assert tasa_conversion is None 

37 assert monto_convertido is None 

38 #Conversión de moneda con monto negativo. 

39def test_convert_currency_negative_amount(mock_conversion_rates): 

40 with patch.object(Database, 'conversion_rates', return_value=mock_conversion_rates): 

41 tasa_conversion, monto_convertido = CurrencyManager.convert_currency(-100, "USD", "EUR") 

42 assert tasa_conversion == Decimal("0.9") 

43 assert monto_convertido == Decimal("-90.00") 

44 #Conversión de moneda con monto cero. 

45def test_convert_currency_zero_amount(mock_conversion_rates): 

46 with patch.object(Database, 'conversion_rates', return_value=mock_conversion_rates): 

47 tasa_conversion, monto_convertido = CurrencyManager.convert_currency(0, "USD", "EUR") 

48 assert tasa_conversion == Decimal("0.9") 

49 assert monto_convertido == Decimal("0.00")