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