mirror of
https://github.com/QualityInUse/lab-testing-maksktl.git
synced 2026-08-05 13:45:26 +03:00
lab 3
This commit is contained in:
@@ -3,3 +3,58 @@
|
||||
# - Test transaction with different types - deposit, withdraw and transfer
|
||||
# - Use mocks accordingly
|
||||
|
||||
from app.transaction import Transaction
|
||||
from app.database import Database
|
||||
|
||||
import pytest
|
||||
from unittest.mock import patch
|
||||
|
||||
@pytest.fixture
|
||||
def mock_database():
|
||||
return Database("")
|
||||
|
||||
@patch('app.database.Database')
|
||||
def test_deposit_positive_amount(mock_db_class):
|
||||
mock_db_instance = mock_db_class.return_value
|
||||
transaction = Transaction(mock_db_instance)
|
||||
account_id = 1
|
||||
amount = 500
|
||||
initial_balance = 1000
|
||||
mock_db_instance.get_account.return_value = (account_id, None, None, initial_balance)
|
||||
transaction.deposit(account_id, amount)
|
||||
mock_db_instance.get_account.assert_called_once_with(account_id)
|
||||
mock_db_instance.update_account_balance.assert_called_once_with(account_id, initial_balance + amount)
|
||||
mock_db_instance.add_transaction.assert_called_once_with(None, account_id, amount, "deposit")
|
||||
|
||||
@patch('app.database.Database')
|
||||
def test_withdraw_positive_amount(mock_db_class):
|
||||
mock_db_instance = mock_db_class.return_value
|
||||
transaction = Transaction(mock_db_instance)
|
||||
account_id = 1
|
||||
amount = 500
|
||||
initial_balance = 1000
|
||||
mock_db_instance.get_account.return_value = (account_id, None, None, initial_balance)
|
||||
transaction.withdraw(account_id, amount)
|
||||
mock_db_instance.get_account.assert_called_once_with(account_id)
|
||||
mock_db_instance.update_account_balance.assert_called_once_with(account_id, initial_balance - amount)
|
||||
mock_db_instance.add_transaction.assert_called_once_with(account_id, None, amount, "withdrawal")
|
||||
|
||||
@patch('app.database.Database')
|
||||
def test_transfer_positive_amount(mock_db_class):
|
||||
mock_db_instance = mock_db_class.return_value
|
||||
transaction = Transaction(mock_db_instance)
|
||||
from_account_id = 1
|
||||
to_account_id = 2
|
||||
amount = 500
|
||||
initial_balance_from = 1000
|
||||
initial_balance_to = 2000
|
||||
mock_db_instance.get_account.side_effect = [
|
||||
(from_account_id, None, None, initial_balance_from),
|
||||
(to_account_id, None, None, initial_balance_to)
|
||||
]
|
||||
transaction.transfer(from_account_id, to_account_id, amount)
|
||||
mock_db_instance.get_account.assert_any_call(from_account_id)
|
||||
mock_db_instance.get_account.assert_any_call(to_account_id)
|
||||
mock_db_instance.update_account_balance.assert_any_call(from_account_id, initial_balance_from - amount)
|
||||
mock_db_instance.update_account_balance.assert_any_call(to_account_id, initial_balance_to + amount)
|
||||
mock_db_instance.add_transaction.assert_called_once_with(from_account_id, to_account_id, amount, "transfer")
|
||||
Reference in New Issue
Block a user