Coverage for tests/test_transaction_manager.py: 100%

30 statements  

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

1import pytest 

2from unittest.mock import patch 

3from datetime import datetime 

4from classes.transaction_manager import TransactionManager 

5from config.database import Database 

6 

7@pytest.fixture 

8def mock_database_connection(): 

9 with patch.object(Database, 'get_connection') as mock_connection: 

10 mock_cursor = mock_connection.return_value.cursor.return_value 

11 mock_cursor.execute.return_value = None 

12 mock_connection.return_value.commit.return_value = None 

13 yield mock_connection 

14 

15def test_register_transaction_success(mock_database_connection):#Prueba que el registro de una transacción se realice correctamente. 

16 result = TransactionManager.register_transaction( 

17 1, "USD", "EUR", 100.00, 0.9, 90.00 

18 ) 

19 assert result is True 

20 

21#Prueba que el método maneja correctamente los errores de base de datos durante el registro de una transacción. 

22def test_register_transaction_database_error(mock_database_connection): 

23 mock_database_connection.side_effect = Exception("Error de base de datos") 

24 result = TransactionManager.register_transaction(1, "USD", "EUR", 100.00, 0.9, 90.00) 

25 assert "error" in result 

26 assert result["error"] == "Error de base de datos" 

27#Prueba que la obtención de transacciones de un usuario se realice correctamente. 

28def test_get_user_transactions_success(mock_database_connection): 

29 mock_cursor = mock_database_connection.return_value.cursor.return_value 

30 mock_cursor.fetchall.return_value = [ 

31 (1, 1, "USD", "EUR", 100.00, 0.9, 90.00, datetime.now()), 

32 (2, 1, "EUR", "JPY", 200.00, 123.0, 24600.00, datetime.now()) 

33 ] 

34 transactions = TransactionManager.get_user_transactions(1) 

35 assert len(transactions) == 2 

36 

37#Prueba que el método maneja correctamente los errores de base de datos durante la obtención de transacciones de un usuario. 

38def test_get_user_transactions_database_error(mock_database_connection): 

39 mock_database_connection.side_effect = Exception("Error de base de datos") 

40 transactions = TransactionManager.get_user_transactions(1) 

41 assert "error" in transactions 

42 assert transactions["error"] == "Error de base de datos"