fix tests
This commit is contained in:
+3
-4
@@ -6,6 +6,7 @@ import pytest
|
||||
|
||||
from ttfrog.db import schema
|
||||
from ttfrog.db.manager import db as _db
|
||||
from ttfrog.db.schema.constants import DamageType, Defenses
|
||||
|
||||
FIXTURE_PATH = Path(__file__).parent / "fixtures"
|
||||
|
||||
@@ -49,14 +50,12 @@ def bootstrap(db):
|
||||
darkvision.add_modifier(schema.Modifier("Darkvision", target="vision_in_darkness", absolute_value=120))
|
||||
tiefling.add_trait(darkvision)
|
||||
|
||||
# resistant to both magical and non-magical sources of fire
|
||||
# resistant to fire
|
||||
infernal_origin = schema.AncestryTrait("Infernal Origin")
|
||||
infernal_origin.add_modifier(schema.Modifier("Infernal Origin", target="defenses.fire", new_value="resistant"))
|
||||
infernal_origin.add_modifier(
|
||||
schema.Modifier("Infernal Origin", target="defenses.magical_fire", new_value="resistant")
|
||||
schema.Modifier("Infernal Origin", target=DamageType.fire, new_value=Defenses.resistant)
|
||||
)
|
||||
tiefling.add_trait(infernal_origin)
|
||||
db.add_or_update(tiefling)
|
||||
|
||||
dragonborn = schema.Ancestry("dragonborn")
|
||||
dragonborn.add_trait(darkvision)
|
||||
|
||||
+25
-22
@@ -1,6 +1,7 @@
|
||||
import json
|
||||
|
||||
from ttfrog.db import schema
|
||||
from ttfrog.db.schema.constants import DamageType, Defenses
|
||||
|
||||
|
||||
def test_manage_character(db, bootstrap):
|
||||
@@ -96,6 +97,14 @@ def test_manage_character(db, bootstrap):
|
||||
assert char.check_modifier(athletics) == char.proficiency_bonus + char.strength.bonus == 3
|
||||
assert char.check_modifier(acrobatics) == char.proficiency_bonus + char.dexterity.bonus == 3
|
||||
|
||||
# assert dexterity bonus apply to initiative
|
||||
char._dexterity = 17
|
||||
assert char.dexterity.bonus == 3
|
||||
assert char.initiative == char.dexterity.bonus == 3
|
||||
char.add_modifier(schema.Modifier("+1 initiative", target="initiative", relative_value=1))
|
||||
assert char.initiative == 4
|
||||
char._dexterity = 10
|
||||
|
||||
# multiclass
|
||||
char.add_class(rogue, level=1)
|
||||
db.add_or_update(char)
|
||||
@@ -279,45 +288,39 @@ def test_defenses(db, bootstrap):
|
||||
with db.transaction():
|
||||
tiefling = db.Ancestry.filter_by(name="tiefling").one()
|
||||
carl = schema.Character(name="Carl", ancestry=tiefling)
|
||||
assert carl.resistant("fire", magical=False)
|
||||
assert carl.resistant("fire", magical=True)
|
||||
carl.apply_damage(5, "fire", magical=True)
|
||||
assert carl.resistant(DamageType.fire)
|
||||
carl.apply_damage(5, DamageType.fire)
|
||||
assert carl.hit_points == 8 # half damage
|
||||
|
||||
immunity = [
|
||||
schema.Modifier("Fire Immunity", target="defenses.fire", new_value="immune"),
|
||||
schema.Modifier("Fire Immunity", target="defenses.magical_fire", new_value="immune")
|
||||
schema.Modifier("Fire Immunity", target=DamageType.fire, new_value=Defenses.immune),
|
||||
]
|
||||
for i in immunity:
|
||||
carl.add_modifier(i)
|
||||
assert carl.immune("fire")
|
||||
carl.apply_damage(5, "fire", magical=True)
|
||||
carl.apply_damage(5, "fire", magical=False)
|
||||
assert carl.immune(DamageType.fire)
|
||||
carl.apply_damage(5, DamageType.fire)
|
||||
assert carl.hit_points == 8 # no damage
|
||||
|
||||
vulnerability = [
|
||||
schema.Modifier("Fire Vulnerability", target="defenses.fire", new_value="vulnerable"),
|
||||
schema.Modifier("Fire Vulnerability", target="defenses.magical_fire", new_value="vulnerable")
|
||||
schema.Modifier("Fire Vulnerability", target=DamageType.fire, new_value=Defenses.vulnerable),
|
||||
]
|
||||
for i in vulnerability:
|
||||
carl.add_modifier(i)
|
||||
assert carl.vulnerable("fire")
|
||||
assert not carl.immune("fire")
|
||||
carl.apply_damage(2, "fire", magical=True)
|
||||
assert carl.vulnerable(DamageType.fire)
|
||||
assert not carl.immune(DamageType.fire)
|
||||
carl.apply_damage(2, DamageType.fire)
|
||||
assert carl.hit_points == 4 # double damage
|
||||
|
||||
absorbs = [
|
||||
schema.Modifier("Absorbs Non-Magical Fire", target="defenses.fire", new_value="absorbs"),
|
||||
]
|
||||
absorbs = [schema.Modifier("Absorbs Non-Magical Fire", target=DamageType.fire, new_value=Defenses.absorbs)]
|
||||
carl.add_modifier(absorbs[0])
|
||||
carl.apply_damage(20, "fire", magical=False)
|
||||
carl.apply_damage(20, DamageType.fire)
|
||||
assert carl.hit_points == carl._max_hit_points == 10
|
||||
|
||||
for i in immunity + vulnerability + absorbs:
|
||||
carl.remove_modifier(i)
|
||||
carl.apply_damage(5, "fire", magical=True)
|
||||
assert carl.resistant("fire")
|
||||
assert not carl.immune("fire")
|
||||
assert not carl.vulnerable("fire")
|
||||
assert not carl.absorbs("fire")
|
||||
carl.apply_damage(5, DamageType.fire)
|
||||
assert carl.resistant(DamageType.fire)
|
||||
assert not carl.immune(DamageType.fire)
|
||||
assert not carl.vulnerable(DamageType.fire)
|
||||
assert not carl.absorbs(DamageType.fire)
|
||||
assert carl.hit_points == 8 # half damage
|
||||
|
||||
Reference in New Issue
Block a user