def test_nested_replace(self): loader = ItemLoader(selector=self.selector) nl1 = loader.nested_xpath('//footer') nl2 = nl1.nested_xpath('a') loader.add_xpath('url', '//footer/a/@href') self.assertEqual(loader.get_output_value('url'), ['http://www.scrapy.org']) nl1.replace_xpath('url', 'img/@src') self.assertEqual(loader.get_output_value('url'), ['/images/logo.png']) nl2.replace_xpath('url', '@href') self.assertEqual(loader.get_output_value('url'), ['http://www.scrapy.org'])
def test_get_output_value_list(self): """Getting output value must not remove value from item""" input_item = self.item_class(name=['foo', 'bar']) il = ItemLoader(item=input_item) self.assertEqual(il.get_output_value('name'), ['foo', 'bar']) loaded_item = il.load_item() self.assertIsInstance(loaded_item, self.item_class) self.assertEqual(loaded_item, dict({'name': ['foo', 'bar']}))
def test_nested_ordering(self): loader = ItemLoader(selector=self.selector) nl1 = loader.nested_xpath('//footer') nl2 = nl1.nested_xpath('a') nl1.add_xpath('url', 'img/@src') loader.add_xpath('url', '//footer/a/@href') nl2.add_xpath('url', 'text()') loader.add_xpath('url', '//footer/a/@href') self.assertEqual(loader.get_output_value('url'), [ '/images/logo.png', 'http://www.scrapy.org', 'homepage', 'http://www.scrapy.org', ])
def test_nested_css(self): loader = ItemLoader(selector=self.selector) nl = loader.nested_css("header") nl.add_xpath('name', 'div/text()') nl.add_css('name_div', '#id') nl.add_value('name_value', nl.selector.xpath('div[@id = "id"]/text()').getall()) self.assertEqual(loader.get_output_value('name'), ['marta']) self.assertEqual(loader.get_output_value('name_div'), ['<div id="id">marta</div>']) self.assertEqual(loader.get_output_value('name_value'), ['marta']) self.assertEqual(loader.get_output_value('name'), nl.get_output_value('name')) self.assertEqual(loader.get_output_value('name_div'), nl.get_output_value('name_div')) self.assertEqual(loader.get_output_value('name_value'), nl.get_output_value('name_value'))
def test_get_unset_value(self): loader = ItemLoader() self.assertEqual(loader.load_item(), {}) self.assertEqual(loader.get_output_value('foo'), []) self.assertEqual(loader.load_item(), {})