def test_casting_spell_raises_spirit_changed_event(self): """ Since casting spells uses spirit, an appropriate event should be raised """ spell = SpellBuilder().with_spirit(10).build() caster = CharacterBuilder().with_spirit(20).build() listener = EventListener() caster.register_for_updates(listener) effects_factory = mock() action = SpellCastingAction(caster=caster, spell=spell, effects_factory=effects_factory) action.execute() events = [event for event in listener.events if e_event_type(event) == "spirit points changed"] assert_that(len(events), is_(equal_to(1)))