48 lines
2.1 KiB
Python
48 lines
2.1 KiB
Python
from src.models.category import Category
|
|
from src.models.category_tree import CategoryTree, _transaction_to_category_branch
|
|
from src.models.transactions import Transaction
|
|
from tests.factories import TransactionFactory
|
|
|
|
|
|
def test_transaction_to_category_branch_simple():
|
|
transaction = TransactionFactory.build(category=Category.from_str("dummy category"))
|
|
result = _transaction_to_category_branch(transaction)
|
|
assert isinstance(result, CategoryTree)
|
|
assert result.category
|
|
assert result.category.name == "dummy category"
|
|
assert result.transactions
|
|
assert isinstance(result.transactions, list)
|
|
assert len(result.transactions) == 1
|
|
assert isinstance(result.transactions[0], Transaction)
|
|
assert result.transactions[0] == transaction
|
|
|
|
|
|
def test_transaction_to_category_branch_two_category_levels():
|
|
transaction = TransactionFactory.build(category=Category.from_str("father:son"))
|
|
result = _transaction_to_category_branch(transaction)
|
|
assert isinstance(result, CategoryTree)
|
|
assert result.category
|
|
assert result.category.name == "father"
|
|
assert result.transactions is None
|
|
assert result.sub_categories
|
|
assert isinstance(result.sub_categories, list)
|
|
assert len(result.sub_categories) == 1
|
|
assert isinstance(result.sub_categories[0], CategoryTree)
|
|
assert isinstance(result.sub_categories[0].category, Category)
|
|
assert result.sub_categories[0].category.name == "son"
|
|
assert result.sub_categories[0].transactions
|
|
assert isinstance(result.sub_categories[0].transactions, list)
|
|
assert len(result.sub_categories[0].transactions) == 1
|
|
assert isinstance(result.sub_categories[0].transactions[0], Transaction)
|
|
assert result.sub_categories[0].transactions[0] == transaction
|
|
|
|
|
|
def test_transaction_to_category_branch_no_category():
|
|
transaction = TransactionFactory.build(category=None)
|
|
result = _transaction_to_category_branch(transaction)
|
|
assert result.category is None
|
|
assert result.transactions
|
|
assert isinstance(result.transactions, list)
|
|
assert len(result.transactions) == 1
|
|
assert result.transactions[0] == transaction
|