mypy black ruff
Tests / test (push) Successful in 11s
Tests / lint (push) Successful in 11s

This commit is contained in:
2026-10-16 22:51:11 +02:00
parent 553e1a4c83
commit 1fcaec8daf
10 changed files with 275 additions and 164 deletions
+15 -14
View File
@@ -1,6 +1,7 @@
import pytest
from datetime import date
import pytest
from src.models.category import Category, CategoryBudget
@@ -20,7 +21,7 @@ class TestCategoryComputedFields:
"""Test hash_id for multi-level category hierarchy."""
c1 = Category.from_str("level1:level2:level3")
assert hasattr(c1, "hash_id")
c2 = Category.from_str("level1:level2:level3")
assert c1.hash_id == c2.hash_id
@@ -35,10 +36,10 @@ class TestCategoryComputedFields:
"""Test that same name but different parent gives different hash."""
root = Category(name="Budget")
cat1 = Category(name="Budget", parent=root)
# Create another with same name but no parent
orphan = Category.from_str("Budget")
assert cat1.hash_id != orphan.hash_id
def test_to_str_single_level(self):
@@ -84,7 +85,7 @@ class TestCategoryBudgetValidation:
def test_valid_budget_with_dates(self):
"""Budget with valid date range is accepted."""
from datetime import date
cat = Category.from_str("test")
budget = CategoryBudget(
category=cat,
@@ -97,9 +98,9 @@ class TestCategoryBudgetValidation:
def test_invalid_date_range_raises(self):
"""Budget with valid_from > valid_to raises ValueError."""
from datetime import date
cat = Category.from_str("test")
with pytest.raises(ValueError) as exc_info:
CategoryBudget(
category=cat,
@@ -107,14 +108,14 @@ class TestCategoryBudgetValidation:
valid_from=date(2026, 10, 31),
valid_to=date(2026, 10, 1),
)
assert "valid_from" in str(exc_info.value)
assert "valid_to" in str(exc_info.value)
assert "nor in order" in str(exc_info.value)
def test_valid_budget_exact_boundary(self):
"""Budget with exact same from and to is valid (single day)."""
from datetime import date
cat = Category.from_str("test")
budget = CategoryBudget(
category=cat,
@@ -127,7 +128,7 @@ class TestCategoryBudgetValidation:
def test_validation_preserves_original_values(self):
"""Validation doesn't change the model's original values."""
from datetime import date
cat = Category.from_str("test")
budget = CategoryBudget(
category=cat,
@@ -135,10 +136,10 @@ class TestCategoryBudgetValidation:
valid_from=date(2026, 9, 1),
valid_to=date(2026, 9, 30),
)
# Create an invalid one and verify validation catches it
# Create an invalid one (valid_from > valid_to) and verify validation catches it
try:
bad_budget = CategoryBudget(
CategoryBudget(
category=cat,
amount_eur=200.00,
valid_from=date(2026, 12, 31),
@@ -146,6 +147,6 @@ class TestCategoryBudgetValidation:
)
except ValueError:
pass # Expected
# Valid one should still have original values
assert budget.amount_eur == 150.75