Add missing AddonManager tests

This commit is contained in:
Jakob de Maeyer 2015-10-29 16:34:52 +01:00
parent 18c7f3dbe2
commit d18b6a61d7
1 changed files with 20 additions and 8 deletions

View File

@ -14,6 +14,7 @@ from scrapy.addons import Addon, AddonManager
from scrapy.crawler import Crawler
from scrapy.interfaces import IAddon
from scrapy.settings import BaseSettings
from scrapy.utils.conf import config_from_filepath
from . import addons
from . import addonmod
@ -244,16 +245,22 @@ class AddonManagerTest(unittest.TestCase):
_test_load_method('load_settings', settings)
def test_load_cfg(self):
def _check_loaded_addons(manager):
six.assertCountEqual(self, manager, ['GoodAddon', 'AddonModule'])
self.assertIsInstance(manager['GoodAddon'], addons.GoodAddon)
six.assertCountEqual(self, manager.configs['GoodAddon'], ['key'])
self.assertEqual(manager.configs['GoodAddon']['key'], 'val1')
# XXX: Check module equality, see above
self.assertEqual(manager['AddonModule'].name, addonmod.name)
six.assertCountEqual(self, manager.configs['AddonModule'], ['key'])
self.assertEqual(manager.configs['AddonModule']['key'], 'val2')
manager = AddonManager()
manager.load_cfg(self.TESTCFGPATH)
six.assertCountEqual(self, manager, ['GoodAddon', 'AddonModule'])
self.assertIsInstance(manager['GoodAddon'], addons.GoodAddon)
six.assertCountEqual(self, manager.configs['GoodAddon'], ['key'])
self.assertEqual(manager.configs['GoodAddon']['key'], 'val1')
# XXX: Check module equality, see above
self.assertEqual(manager['AddonModule'].name, addonmod.name)
six.assertCountEqual(self, manager.configs['AddonModule'], ['key'])
self.assertEqual(manager.configs['AddonModule']['key'], 'val2')
_check_loaded_addons(manager)
manager = AddonManager()
preloaded_cfg = config_from_filepath(self.TESTCFGPATH)
manager.load_cfg(preloaded_cfg)
_check_loaded_addons(manager)
def test_enabled_disabled(self):
manager = AddonManager()
@ -330,6 +337,11 @@ class AddonManagerTest(unittest.TestCase):
self.assertEqual(us_first.call_count, 1)
self.assertEqual(us_second.call_count, 2)
# This will become relevant when we let spiders implement the add-on
# interface and should be replaced with a test where
# AddonManager.spidercls = None then.
manager._call_if_exists(None, 'irrelevant')
def test_update_addons_last_minute_add(self):
class AddedAddon(addons.GoodAddon):
name = 'AddedAddon'