Files
dungeon-sheets/tests/test_spells.py
T

40 lines
1.5 KiB
Python

#!/usr/bin/env python
from unittest import TestCase
from dungeonsheets import spells
from dungeonsheets.spells import create_spell, Spell, all_spells
class TestSpells(TestCase):
"""Tests for spells and spell-related activities."""
def test_all_spells(self):
# Make sure only spells are returned
for ThisSpell in all_spells():
self.assertTrue(isinstance(ThisSpell, type),
f"``all_spells`` returned {ThisSpell} (not a class)")
self.assertTrue(issubclass(ThisSpell, Spell),
f"``all_spells`` returned {ThisSpell} (not a spell)")
# Pick a couple of known spells to spot-check for
all_the_spells = list(all_spells())
self.assertIn(spells.MagicMissile, all_the_spells)
self.assertIn(spells.Thunderwave, all_the_spells)
def test_create_spell(self):
NewSpell = create_spell(name="Hello world")
self.assertTrue(issubclass(NewSpell, Spell))
self.assertEqual(NewSpell.name, 'Hello world')
spell = NewSpell()
print(spell, spell.__class__, type(spell))
def test_spell_str(self):
spell = Spell()
spell.name = "My spell"
self.assertEqual(str(spell), 'My spell')
# Try with a ritual
spell.ritual = True
self.assertEqual(str(spell), 'My spell (R)')
# Try with a ritual and a concentration
spell.concentration = True
self.assertEqual(str(spell), 'My spell (R, C)')