You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
73 lines
3.1 KiB
73 lines
3.1 KiB
# - In this file, you have to add your tests on Database module. |
|
# - See, app/database.py |
|
# - Test most of the methods |
|
# - Use mocks in proper parts |
|
|
|
from app.database import Database |
|
from unittest.mock import patch |
|
import pytest |
|
|
|
@pytest.fixture |
|
def db(): |
|
return Database('') |
|
|
|
@patch('app.database.Database') |
|
def test_add_customer(mock_db_class): |
|
mock_db_instance = mock_db_class.return_value |
|
mock_db_instance.add_customer.return_value = 1 |
|
assert mock_db_instance.add_customer('Maks', 'Universitetskaya 1') == 1 |
|
mock_db_instance.add_customer.assert_called_once_with('Maks', 'Universitetskaya 1') |
|
|
|
@patch('app.database.Database') |
|
def test_get_customer(mock_db_class): |
|
mock_db_instance = mock_db_class.return_value |
|
mock_db_instance.get_customer.return_value = (1, 'Maks', 'Universitetskaya 1') |
|
customer = mock_db_instance.get_customer(1) |
|
assert customer[1] == 'Maks' |
|
assert customer[2] == 'Universitetskaya 1' |
|
|
|
@patch('app.database.Database') |
|
def test_update_customer(mock_db_class): |
|
mock_db_instance = mock_db_class.return_value |
|
mock_db_instance.add_customer.return_value = 1 |
|
mock_db_instance.get_customer.return_value = (1, 'Maks New', 'Universitetskaya 1/3') |
|
customer_id = mock_db_instance.add_customer('Maks', 'Universitetskaya 1') |
|
mock_db_instance.update_customer(customer_id, 'Maks New', 'Universitetskaya 1/3') |
|
updated_customer = mock_db_instance.get_customer(customer_id) |
|
assert updated_customer[1] == 'Maks New' |
|
assert updated_customer[2] == 'Universitetskaya 1/3' |
|
|
|
@patch('app.database.Database') |
|
def test_delete_customer(mock_db_class): |
|
mock_db_instance = mock_db_class.return_value |
|
mock_db_instance.add_customer.return_value = 1 |
|
mock_db_instance.get_customer.return_value = None |
|
customer_id = mock_db_instance.add_customer('Maks', 'Universitetskaya 1') |
|
mock_db_instance.delete_customer(customer_id) |
|
deleted_customer = mock_db_instance.get_customer(customer_id) |
|
assert deleted_customer is None |
|
|
|
@patch('app.database.Database') |
|
def test_add_account(mock_db_class): |
|
mock_db_instance = mock_db_class.return_value |
|
mock_db_instance.add_account.return_value = 1 |
|
customer_id = mock_db_class.add_customer('Maks', 'Universitetskaya 1') |
|
account_id = mock_db_class.add_account(customer_id, 'deposit', 1000.00) |
|
assert account_id is not None |
|
|
|
@patch('app.database.Database') |
|
def test_get_account(mock_db_class): |
|
mock_db_instance = mock_db_class.return_value |
|
mock_db_instance.add_customer.return_value = 1 |
|
mock_db_instance.add_account.return_value = 1 |
|
mock_db_instance.get_account.return_value = (1, 1, 'deposit', 1000.00) |
|
customer_id = mock_db_instance.add_customer('Maks', 'Universitetskaya 1') |
|
account_id = mock_db_instance.add_account(customer_id, 'deposit', 1000.00) |
|
retrieved_account = mock_db_instance.get_account(account_id) |
|
assert retrieved_account[2] == 'deposit' |
|
assert retrieved_account[3] == 1000.00 |
|
|
|
@patch('app.database.Database.add_transaction') |
|
def test_add_transaction(mock_add_transaction, db): |
|
db.add_transaction(1, 2, 100, 'deposit') |
|
mock_add_transaction.assert_called_once_with(1, 2, 100, 'deposit')
|
|
|