fix(models): require a positive range_increment_ft (reject 0 and negatives)

This commit is contained in:
2026-09-20 17:36:45 +02:00
parent e9c2a63122
commit 10f811e80e
3 changed files with 22 additions and 2 deletions
+15
View File
@@ -116,6 +116,21 @@ class TestAttackSpec:
with pytest.raises(ValidationError):
AttackSpec.model_validate(_attack_dict(damage=[]))
@pytest.mark.parametrize("increment", [0, -30])
def test_rejects_non_positive_range_increment(self, increment: int) -> None:
# Given a range_increment_ft of 0 (ZeroDivisionError in range_penalty)
# or negative (silently unusable weapon)
# When/Then validation rejects it
with pytest.raises(ValidationError):
AttackSpec.model_validate(_attack_dict(kind="ranged", range_increment_ft=increment))
def test_accepts_positive_range_increment(self) -> None:
# Given a legal range increment
# When validated
attack = AttackSpec.model_validate(_attack_dict(kind="ranged", range_increment_ft=30))
# Then it is kept
assert attack.range_increment_ft == 30
def test_rejects_crit_mult_below_2(self) -> None:
# Given crit_mult=1 (a weapon that never multiplies is not PF1e)
# When/Then validation rejects it