def testEchoedExtraRequestData(self): d = SruFieldDrilldown() result = "".join( d.echoedExtraRequestData( sruArguments={ 'x-field-drilldown': ['term'], 'x-field-drilldown-fields': ['field0,field1'], 'otherArgument': ['ignored'] })) self.assertEquals( DRILLDOWN_HEADER + '<dd:field-drilldown>term</dd:field-drilldown><dd:field-drilldown-fields>field0,field1</dd:field-drilldown-fields></dd:drilldown>', result)
def testDrilldown(self): adapter = SruFieldDrilldown() observer = CallTrace("Observer") def executeQuery(**kwargs): raise StopIteration(Response(total=16, hits=range(16))) yield observer.methods['executeQuery'] = executeQuery adapter.addObserver(observer) def dd(): result = yield adapter.drilldown('original', 'term', ['field0', 'field1']) yield result result = compose(dd()).next() self.assertEquals(2, len(observer.calledMethods)) self.assertEquals(['executeQuery', 'executeQuery'], observer.calledMethodNames()) self.assertEquals(cqlToExpression("(original) and field0=term"), observer.calledMethods[0].kwargs['query']) self.assertEquals([("field0", 16), ("field1", 16)], result)
def testSRUParamsAndXMLOutput(self): firstCall = [] 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 sruFieldDrilldown = SruFieldDrilldown() observer = CallTrace("observer") sruFieldDrilldown.addObserver(observer) observer.methods["executeQuery"] = executeQuery result = compose(sruFieldDrilldown.extraResponseData(sruArguments={'x-field-drilldown': ['term'], 'x-field-drilldown-fields': ['field0,field1']}, query='original')) self.assertEqualsWS(DRILLDOWN_HEADER + """<dd:field-drilldown> <dd:field name="field0">5</dd:field> <dd:field name="field1">10</dd:field></dd:field-drilldown></dd:drilldown>""", "".join(result)) self.assertEquals(['executeQuery', 'executeQuery'], [m.name for m in observer.calledMethods]) self.assertEquals(['query', 'query'], [','.join((m.kwargs.keys())) for m in observer.calledMethods]) self.assertEquals(cqlToExpression('(original) AND field0=term'), observer.calledMethods[0].kwargs['query']) self.assertEquals(cqlToExpression('(original) AND field1=term'), observer.calledMethods[1].kwargs['query'])
def testSRUParamsAndXMLOutput(self): firstCall = [] 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 sruFieldDrilldown = SruFieldDrilldown() observer = CallTrace("observer") sruFieldDrilldown.addObserver(observer) observer.methods["executeQuery"] = executeQuery result = compose( sruFieldDrilldown.extraResponseData(sruArguments={ 'x-field-drilldown': ['term'], 'x-field-drilldown-fields': ['field0,field1'] }, query='original')) self.assertEqualsWS( DRILLDOWN_HEADER + """<dd:field-drilldown> <dd:field name="field0">5</dd:field> <dd:field name="field1">10</dd:field></dd:field-drilldown></dd:drilldown>""", "".join(result)) self.assertEquals(['executeQuery', 'executeQuery'], [m.name for m in observer.calledMethods]) self.assertEquals( ['query', 'query'], [','.join((m.kwargs.keys())) for m in observer.calledMethods]) self.assertEquals(cqlToExpression('(original) AND field0=term'), observer.calledMethods[0].kwargs['query']) self.assertEquals(cqlToExpression('(original) AND field1=term'), observer.calledMethods[1].kwargs['query'])
def testEchoedExtraRequestData(self): d = SruFieldDrilldown() result = "".join(d.echoedExtraRequestData(sruArguments={'x-field-drilldown': ['term'], 'x-field-drilldown-fields': ['field0,field1'], 'otherArgument': ['ignored']})) self.assertEquals(DRILLDOWN_HEADER + '<dd:field-drilldown>term</dd:field-drilldown><dd:field-drilldown-fields>field0,field1</dd:field-drilldown-fields></dd:drilldown>', result)