Add test cases for adding / removing fallbacks

pull/2588/head
Åke Forslund 2020-05-18 08:35:11 +02:00
parent 06e958cf73
commit 73fd98aee1
1 changed files with 50 additions and 0 deletions

View File

@ -0,0 +1,50 @@
from unittest import TestCase, mock
from mycroft.skills import FallbackSkill
def setup_fallback(fb_class):
fb_skill = fb_class()
fb_skill.bind(mock.Mock(name='bus'))
fb_skill.initialize()
return fb_skill
class TestFallbackSkill(TestCase):
def test_life_cycle(self):
"""Test startup and shutdown of a fallback skill.
Ensure that an added handler is removed as part of default shutdown.
"""
self.assertEqual(len(FallbackSkill.fallback_handlers), 0)
fb_skill = setup_fallback(SimpleFallback)
self.assertEqual(len(FallbackSkill.fallback_handlers), 1)
self.assertEqual(FallbackSkill.wrapper_map[0][0],
fb_skill.fallback_handler)
self.assertEqual(len(FallbackSkill.wrapper_map), 1)
fb_skill.default_shutdown()
self.assertEqual(len(FallbackSkill.fallback_handlers), 0)
self.assertEqual(len(FallbackSkill.wrapper_map), 0)
def test_manual_removal(self):
"""Test that the call to remove_fallback() removes the handler"""
self.assertEqual(len(FallbackSkill.fallback_handlers), 0)
# Create skill adding a single handler
fb_skill = setup_fallback(SimpleFallback)
self.assertEqual(len(FallbackSkill.fallback_handlers), 1)
fb_skill.remove_fallback(fb_skill.fallback_handler)
# Both internal trackers of handlers should be cleared now
self.assertEqual(len(FallbackSkill.fallback_handlers), 0)
self.assertEqual(len(FallbackSkill.wrapper_map), 0)
class SimpleFallback(FallbackSkill):
"""Simple fallback skill used for test."""
def initialize(self):
self.register_fallback(self.fallback_handler, 42)
def fallback_handler(self):
pass