From a23ff3705063df065b1c7685a0aef74bbb8660bc Mon Sep 17 00:00:00 2001 From: Pablo Hoffman Date: Wed, 5 Aug 2009 11:38:01 -0300 Subject: [PATCH] ItemLoader: added one more test and improved other test names --- scrapy/newitem/loader/__init__.py | 5 +++-- scrapy/tests/test_itemloader.py | 16 ++++++++++++++-- 2 files changed, 17 insertions(+), 4 deletions(-) diff --git a/scrapy/newitem/loader/__init__.py b/scrapy/newitem/loader/__init__.py index b5002c05f..1ab0fb476 100644 --- a/scrapy/newitem/loader/__init__.py +++ b/scrapy/newitem/loader/__init__.py @@ -12,8 +12,9 @@ class ItemLoader(object): default_reducer = TakeFirst() def __init__(self, **loader_args): - self._response = loader_args.get('response') - self._item = loader_args.setdefault('item', self.default_item_class()) + if 'item' not in loader_args: + loader_args['item'] = self.default_item_class() + self._item = loader_args['item'] self._loader_args = loader_args self._values = defaultdict(list) diff --git a/scrapy/tests/test_itemloader.py b/scrapy/tests/test_itemloader.py index 484257e67..9dd949e8d 100644 --- a/scrapy/tests/test_itemloader.py +++ b/scrapy/tests/test_itemloader.py @@ -127,7 +127,7 @@ class ItemLoaderTest(unittest.TestCase): il.add_value('name', u'marta') self.assertEqual(il.get_reduced_value('name'), u'marta') - def test_extend_expanders(self): + def test_extend_custom_expanders(self): class ChildItemLoader(TestItemLoader): name_exp = TreeExpander(TestItemLoader.name_exp, unicode.swapcase) @@ -135,7 +135,7 @@ class ItemLoaderTest(unittest.TestCase): il.add_value('name', u'marta') self.assertEqual(il.get_reduced_value('name'), u'mARTA') - def test_staticdefaults(self): + def test_extend_default_expanders(self): class ChildDefaultedItemLoader(DefaultedItemLoader): name_exp = TreeExpander(DefaultedItemLoader.default_expander, unicode.swapcase) @@ -210,6 +210,18 @@ class ItemLoaderTest(unittest.TestCase): il.add_value('url', u'text', key=u'val') self.assertEqual(il.get_reduced_value('url'), 'val') + def test_item_passed_to_expander_functions(self): + def exp_func(value, loader_args): + return loader_args['item']['name'] + + class ChildItemLoader(TestItemLoader): + url_exp = TreeExpander(exp_func) + + it = TestItem(name='marta') + il = ChildItemLoader(item=it) + il.add_value('url', u'text', key=u'val') + self.assertEqual(il.get_reduced_value('url'), 'marta') + def test_add_value_on_unknown_field(self): il = TestItemLoader() self.assertRaises(KeyError, il.add_value, 'wrong_field', [u'lala', u'lolo'])