def executeQuery(**kwargs): if not firstCall: firstCall.append(True) raise StopIteration(Response(total=5, hits=range(5))) else: raise StopIteration(Response(total=10, hits=range(10))) yield
def executeQuery(**kwargs): if not firstCall: firstCall.append(True) return Response(total=5, hits=list(range(5))) else: return Response(total=10, hits=list(range(10))) yield
def setUp(self): SeecrTestCase.setUp(self) self.srw = Srw() self.sruParser = SruParser() self.sruHandler = SruHandler() self.srw.addObserver(self.sruParser) self.sruParser.addObserver(self.sruHandler) self.response = Response(total=1, hits=[Hit('0')]) def executeQuery(**kwargs): return self.response yield def retrieveData(**kwargs): return 'data' yield self.observer = CallTrace(methods={ 'executeQuery': executeQuery, 'retrieveData': retrieveData }, emptyGeneratorMethods=[ 'extraResponseData', 'echoedExtraRequestData', 'additionalDiagnosticDetails', 'extraRecordData' ]) self.sruHandler.addObserver(self.observer)
def testConstructorVariablesAreUsed(self): request = soapEnvelope % SRW_REQUEST % argumentsWithMandatory % "" srw = Srw(defaultRecordSchema="DEFAULT_RECORD_SCHEMA", defaultRecordPacking="DEFAULT_RECORD_PACKING") sruParser = SruParser() srw.addObserver(sruParser) sruParser.addObserver(self.sruHandler) response = Response(total=1, hits=[Hit(1)]) def executeQuery(**kwargs): return response yield @asyncnoreturnvalue def methodAsGenerator(**kwargs): pass observer = CallTrace(methods={ 'executeQuery': executeQuery, 'extraResponseData': methodAsGenerator, 'echoedExtraRequestData': methodAsGenerator, }, emptyGeneratorMethods=[ 'additionalDiagnosticDetails', 'extraRecordData', ]) self.sruHandler.addObserver(observer) response = "".join(compose(srw.handleRequest(Body=request))) self.assertTrue("DEFAULT_RECORD_SCHEMA" in response, response) self.assertTrue("DEFAULT_RECORD_PACKING" in response, response)
def testEmptySortKeys(self): request = soapEnvelope % SRW_REQUEST % argumentsWithMandatory % "<SRW:sortKeys/>" self.response = Response(total=0, hits=[]) result = "".join(compose(self.srw.handleRequest(Body=request))) executeQueryKwargs = self.observer.calledMethods[0].kwargs self.assertFalse("sortKeys" in executeQueryKwargs, executeQueryKwargs)
def testDoNothingIfNoSuggestionsInResponse(self): suggestions = Suggestion(count=1, field='afield') response = Response(total=0, hits=[]) responseData = list( compose( suggestions.extraResponseData( response=response, sruArguments={'x-suggestionsQuery': ["query"]}))) self.assertEqual([], responseData)
def setUp(self): SeecrTestCase.setUp(self) self.observer = CallTrace('observer') self.response = Response(total=0, hits=[]) def executeQuery(**kwargs): return self.response yield self.observer.methods['executeQuery'] = executeQuery
def testSpecialCharacters(self): suggestions = Suggestion(count=1, field='afield') response = Response(total=0, hits=[]) response.suggestions = {'Éäéðĉ': ['Éäéðĉ']} responseData = ''.join( compose( suggestions.extraResponseData( response=response, sruArguments={'x-suggestionsQuery': ['Éäéðĉ']}))) self.assertXmlEquals( """<suggestions xmlns="http://meresco.org/namespace/suggestions"> <suggestion>Éäéðĉ</suggestion> </suggestions> """, responseData)
def setUp(self): SeecrTestCase.setUp(self) self.response = Response(total=10, hits=[]) self.drilldownDataResponse = None def executeQuery(facets=None, **kwargs): if self.drilldownDataResponse: self.response.drilldownData = self.drilldownDataResponse elif not facets is None: self.response.drilldownData = [] for facet in facets: if isinstance(facet, dict): self.response.drilldownData.append({'fieldname': facet['fieldname'], 'terms':[{'term': 'value1', 'count': 1}, {'term': 'value2', 'count': 2}]}) return self.response yield self.observer = CallTrace('observer', methods={'executeQuery': executeQuery}, emptyGeneratorMethods=['someMethod'])
def testNormalOperation(self): request = soapEnvelope % SRW_REQUEST % argumentsWithMandatory % "" self.response = Response(total=1, hits=[Hit('recordId')]) del self.observer.methods['retrieveData'] def retrieveData(identifier, name): return "<DATA>%s-%s</DATA>" % (identifier, name) yield self.observer.methods['retrieveData'] = retrieveData result = "".join(compose(self.srw.handleRequest(Body=request))) self.assertEqualsWS( httpResponse % soapEnvelope % wrappedMockAnswer % ('recordId', 'dc.author = "jones" and dc.title = "smith"'), result)
def testCreateExtraResponseDataWithMultipleSuggestions(self): suggestions = Suggestion(count=1, field='afield') response = Response(total=0, hits=[]) response.suggestions = { 'query': ['que', 'emery', 'queen'], 'value': ['valu', 'ot'] } responseData = ''.join( compose( suggestions.extraResponseData( response=response, sruArguments={'x-suggestionsQuery': ["query AND value"]}))) self.assertEqualsWS( """<suggestions xmlns="http://meresco.org/namespace/suggestions"> <suggestion>que AND valu</suggestion> <suggestion>emery AND ot</suggestion> </suggestions> """, responseData)
def testHarriePoter(self): suggestions = Suggestion(count=1, field='afield') response = Response(total=0, hits=[]) response.suggestions = { 'harrie': ['harry', 'marie'], 'poter': ['potter', 'peter'] } responseData = ''.join( compose( suggestions.extraResponseData( response=response, sruArguments={'x-suggestionsQuery': ["harrie AND poter"]}))) self.assertEqualsWS( """<suggestions xmlns="http://meresco.org/namespace/suggestions"> <suggestion>harry AND potter</suggestion> <suggestion>marie AND peter</suggestion> </suggestions> """, responseData)
def testExampleFromLibraryOffCongressSite(self): """testExampleFromLibraryOffCongressSite - Integration test based on http://www.loc.gov/standards/sru/srw/index.html spelling error ("recordSchema") corrected """ request = """<SOAP:Envelope xmlns:SOAP="http://schemas.xmlsoap.org/soap/envelope/"> <SOAP:Body> <SRW:searchRetrieveRequest xmlns:SRW="http://www.loc.gov/zing/srw/"> <SRW:version>1.1</SRW:version> <SRW:query>dc.author = "jones" and dc.title = "smith"</SRW:query> <SRW:startRecord>1</SRW:startRecord> <SRW:maximumRecords>10</SRW:maximumRecords> <SRW:recordSchema>info:srw/schema/1/mods-v3.0</SRW:recordSchema> </SRW:searchRetrieveRequest> </SOAP:Body> </SOAP:Envelope>""" self.response = StopIteration(Response(total=1, hits=[Hit('recordId')])) del self.observer.methods['retrieveData'] def retrieveData(identifier, name): raise StopIteration("<DATA>%s-%s</DATA>" % (identifier, name)) yield self.observer.methods['retrieveData'] = retrieveData response = "".join(compose(self.srw.handleRequest(Body=request))) echoRequest = """<srw:echoedSearchRetrieveRequest> <srw:version>1.1</srw:version> <srw:query>dc.author = "jones" and dc.title = "smith"</srw:query> <srw:startRecord>1</srw:startRecord> <srw:maximumRecords>10</srw:maximumRecords> <srw:recordPacking>xml</srw:recordPacking> <srw:recordSchema>info:srw/schema/1/mods-v3.0</srw:recordSchema> </srw:echoedSearchRetrieveRequest>""" self.assertEqualsWS( httpResponse % soapEnvelope % searchRetrieveResponse % (1, '<srw:records><srw:record><srw:recordSchema>info:srw/schema/1/mods-v3.0</srw:recordSchema><srw:recordPacking>xml</srw:recordPacking><srw:recordData><DATA>recordId-info:srw/schema/1/mods-v3.0</DATA></srw:recordData></srw:record></srw:records>' + echoRequest), response)
def executeQuery(**kwargs): return Response(total=42) yield
def executeQuery(**kwargs): raise StopIteration(Response(total=1, hits=[Hit(1)])) yield
def executeQuery(start, stop, *args, **kwargs): response = Response(total=50, hits=[Hit(i) for i in range(start, stop)]) raise StopIteration(response) yield
def executeQuery(**kwargs): raise StopIteration(Response(total=16, hits=range(16))) yield
def executeQuery(**kwargs): return Response(total=3201, hits=[]) yield
def executeQuery(**kwargs): raise StopIteration(Response(total=42)) yield
def executeQuery(**kwargs): return Response(total=16, hits=list(range(16))) yield
def executeQuery(**kwargs): return Response(total=1, hits=[Hit(1)]) yield
def executeQuery(start, stop, *args, **kwargs): response = Response(total=50, hits=[Hit(i) for i in range(start, stop)]) return response yield