mirror of https://github.com/scrapy/scrapy.git
73 lines
2.5 KiB
Python
73 lines
2.5 KiB
Python
import unittest
|
|
|
|
from scrapy.addons import Addon, AddonManager
|
|
from scrapy.settings import BaseSettings
|
|
|
|
|
|
class GoodAddon(object):
|
|
name = "GoodAddon"
|
|
|
|
def update_settings(self, config, settings):
|
|
pass
|
|
|
|
def check_configuration(self, config, crawler):
|
|
pass
|
|
|
|
|
|
class AddonTest(unittest.TestCase):
|
|
def setUp(self):
|
|
class AddonWithAttributes(Addon):
|
|
name = "Test"
|
|
|
|
self.testaddon = AddonWithAttributes()
|
|
|
|
def test_export_config(self):
|
|
settings = BaseSettings()
|
|
self.testaddon.config_mapping = {"MAPPED_key": "MAPPING_WORKED"}
|
|
self.testaddon.default_config = {"key": 55, "defaultkey": 100}
|
|
self.testaddon.export_config(
|
|
{"key": 313, "OTHERKEY": True, "mapped_KEY": 99}, settings
|
|
)
|
|
self.assertEqual(settings["KEY"], 313)
|
|
self.assertEqual(settings["DEFAULTKEY"], 100)
|
|
self.assertEqual(settings["OTHERKEY"], True)
|
|
self.assertNotIn("MAPPED_key", settings)
|
|
self.assertNotIn("MAPPED_KEY", settings)
|
|
self.assertEqual(settings["MAPPING_WORKED"], 99)
|
|
self.assertEqual(settings.getpriority("KEY"), 15)
|
|
|
|
def test_update_settings(self):
|
|
settings = BaseSettings()
|
|
settings.set("KEY1", "default", priority="default")
|
|
settings.set("KEY2", "project", priority="project")
|
|
addon_config = {"key1": "addon", "key2": "addon", "key3": "addon"}
|
|
self.testaddon.update_settings(addon_config, settings)
|
|
self.assertEqual(settings["KEY1"], "addon")
|
|
self.assertEqual(settings["KEY2"], "project")
|
|
self.assertEqual(settings["KEY3"], "addon")
|
|
|
|
|
|
class AddonManagerTest(unittest.TestCase):
|
|
def setUp(self):
|
|
self.manager = AddonManager()
|
|
|
|
def test_add(self):
|
|
manager = AddonManager()
|
|
manager.add("tests.test_addons.GoodAddon")
|
|
self.assertCountEqual(manager, ["GoodAddon"])
|
|
self.assertIsInstance(manager["GoodAddon"], GoodAddon)
|
|
|
|
def test_load_settings(self):
|
|
settings = BaseSettings()
|
|
settings.set(
|
|
"ADDONS",
|
|
{"tests.test_addons.GoodAddon": 0},
|
|
)
|
|
settings.set("GOODADDON", {"key": "val2"})
|
|
manager = AddonManager()
|
|
manager.load_settings(settings)
|
|
self.assertCountEqual(manager, ["GoodAddon"])
|
|
self.assertIsInstance(manager["GoodAddon"], GoodAddon)
|
|
self.assertCountEqual(manager.configs["GoodAddon"], ["key"])
|
|
self.assertEqual(manager.configs["GoodAddon"]["key"], "val2")
|