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
« 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
5from classes.currency_manager import CurrencyManager
6from config.database import Database
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")