<s> from __future__ import unicode_literals <EOL> import copy <EOL> from six . moves import xrange <EOL> from scrapi . base import XMLHarvester <EOL> from scrapi . base . schemas import DOESCHEMA <EOL> from scrapi . linter . document import RawDocument <EOL> from scrapi . base . helpers import updated_schema , build_properties , single_result <EOL> RAW_DOC = { <EOL> '<STR_LIT>' : b'<STR_LIT:{}>' , <EOL> '<STR_LIT>' : '<STR_LIT>' , <EOL> '<STR_LIT>' : { <EOL> '<STR_LIT>' : '<STR_LIT>' , <EOL> '<STR_LIT>' : '<STR_LIT>' , <EOL> '<STR_LIT>' : '<STR_LIT>' <EOL> } , <EOL> '<STR_LIT>' : '<STR_LIT>' , <EOL> '<STR_LIT:source>' : '<STR_LIT:test>' <EOL> } <EOL> POSTGRES_RAW_DOC = copy . copy ( RAW_DOC ) <EOL> POSTGRES_RAW_DOC [ '<STR_LIT>' ] = '<STR_LIT:{}>' <EOL> NORMALIZED_DOC = { <EOL> '<STR_LIT:title>' : '<STR_LIT>' , <EOL> '<STR_LIT>' : [ { '<STR_LIT:name>' : '<STR_LIT>' } ] , <EOL> '<STR_LIT:source>' : '<STR_LIT:test>' , <EOL> '<STR_LIT>' : '<STR_LIT>' , <EOL> '<STR_LIT>' : { <EOL> '<STR_LIT>' : '<STR_LIT>' <EOL> } <EOL> } <EOL> RECORD = { <EOL> '<STR_LIT:title>' : '<STR_LIT>' , <EOL> '<STR_LIT>' : [ <EOL> { <EOL> '<STR_LIT:name>' : '<STR_LIT>' , <EOL> '<STR_LIT>' : '<STR_LIT>' , <EOL> '<STR_LIT>' : '<STR_LIT>' , <EOL> '<STR_LIT>' : '<STR_LIT>' , <EOL> '<STR_LIT:email>' : '<STR_LIT>' , <EOL> '<STR_LIT>' : [ '<STR_LIT>' ] <EOL> } <EOL> ] , <EOL> '<STR_LIT>' : { <EOL> '<STR_LIT>' : '<STR_LIT>' <EOL> } , <EOL> '<STR_LIT>' : [ { <EOL> '<STR_LIT:name>' : '<STR_LIT>' , <EOL> '<STR_LIT>' : { <EOL> '<STR_LIT>' : '<STR_LIT>' , <EOL> } <EOL> } , { <EOL> '<STR_LIT:name>' : '<STR_LIT:type>' , <EOL> '<STR_LIT>' : { <EOL> '<STR_LIT:type>' : '<STR_LIT:text>' , <EOL> '<STR_LIT>' : '<STR_LIT>' <EOL> } <EOL> } ] , <EOL> '<STR_LIT:description>' : '<STR_LIT>' , <EOL> '<STR_LIT>' : '<STR_LIT>' , <EOL> '<STR_LIT>' : { <EOL> '<STR_LIT:source>' : '<STR_LIT:test>' , <EOL> '<STR_LIT>' : '<STR_LIT>' <EOL> } <EOL> } <EOL> TEST_SCHEMA = updated_schema ( DOESCHEMA , { <EOL> "<STR_LIT:title>" : ( "<STR_LIT>" , lambda x : "<STR_LIT>" ) , <EOL> "<STR_LIT>" : build_properties ( <EOL> ( "<STR_LIT>" , ( "<STR_LIT>" , single_result ) ) , <EOL> ( "<STR_LIT>" , ( "<STR_LIT>" , lambda x : single_result ( x ) . lower ( ) ) ) , <EOL> ( "<STR_LIT>" , ( "<STR_LIT>" , "<STR_LIT>" , lambda x , y : single_result ( x ) + single_result ( y ) . lower ( ) ) ) <EOL> ) <EOL> } ) <EOL> TEST_NAMESPACES = { <EOL> '<STR_LIT>' : '<STR_LIT>' , <EOL> '<STR_LIT>' : '<STR_LIT>' , <EOL> '<STR_LIT>' : '<STR_LIT>' <EOL> } <EOL> TEST_XML_DOC = b'''<STR_LIT>''' <EOL> TEST_OAI_DOC = b'''<STR_LIT>''' <EOL> class TestHarvester ( XMLHarvester ) : <EOL> long_name = '<STR_LIT>' <EOL> short_name = '<STR_LIT:test>' <EOL> url = '<STR_LIT>' <EOL> schema = TEST_SCHEMA <EOL> namespaces = TEST_NAMESPACES <EOL> def harvest ( self , days_back = <NUM_LIT:1> ) : <EOL> return [ RawDocument ( { <EOL> '<STR_LIT>' : TEST_XML_DOC , <EOL> '<STR_LIT:source>' : '<STR_LIT:test>' , <EOL> '<STR_LIT>' : '<STR_LIT>' , <EOL> '<STR_LIT>' : "<STR_LIT:1>" , <EOL> '<STR_LIT>' : { <EOL> '<STR_LIT>' : '<STR_LIT>' , <EOL> '<STR_LIT>' : '<STR_LIT>' , <EOL> '<STR_LIT>' : '<STR_LIT>' <EOL> } <EOL> } ) for _ in xrange ( days_back ) ] </s>
