mirror of
https://github.com/QualityInUse/lab-testing-maksktl.git
synced 2026-08-05 16:35:27 +03:00
60 lines
2.6 KiB
Python
60 lines
2.6 KiB
Python
# - In this file, you have to add your tests on Transaction module.
|
|
# - See, app/transaction.py
|
|
# - 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") |