Ejemplo n.º 1
0
    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)
Ejemplo n.º 2
0
    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)
Ejemplo n.º 3
0
    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)
Ejemplo n.º 4
0
    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)
Ejemplo n.º 5
0
 def executeQuery(**kwargs):
     raise StopIteration(Response(total=1, hits=[Hit(1)]))
     yield
Ejemplo n.º 6
0
 def executeQuery(start, stop, *args, **kwargs):
     response = Response(total=50, hits=[Hit(i) for i in range(start, stop)])
     raise StopIteration(response)
     yield
Ejemplo n.º 7
0
 def executeQuery(**kwargs):
     return Response(total=1, hits=[Hit(1)])
     yield
Ejemplo n.º 8
0
 def executeQuery(start, stop, *args, **kwargs):
     response = Response(total=50, hits=[Hit(i) for i in range(start, stop)])
     return response
     yield