def testNoSuggestionQuery(self): extraArguments = {'x-suggestionsQuery': [''], 'x-suggestionsField': ['fieldname'], 'x-suggestionsCount': ['5']} suggestion = Suggestion(count=10, field='dcterms:title', allowOverrideField=False) suggestion.addObserver(self.observer) result = retval(suggestion.executeQuery(kwarg='value', extraArguments=extraArguments)) self.assertEquals(['executeQuery'], self.observer.calledMethodNames()) methodKwargs = self.observer.calledMethods[0].kwargs self.assertEquals(None, methodKwargs['suggestionRequest'])
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 testXSuggestionCountMaximized(self): extraArguments = {'x-suggestionsQuery': ['query'], 'x-suggestionsCount': ['50']} suggestion = Suggestion(count=10, field='dcterms:title', maximumCount=20) suggestion.addObserver(self.observer) result = retval(suggestion.executeQuery(kwarg='value', extraArguments=extraArguments)) self.assertTrue(result == self.response) self.assertEquals(['executeQuery'], self.observer.calledMethodNames()) methodKwargs = self.observer.calledMethods[0].kwargs self.assertEquals(dict(count=20, field='dcterms:title', suggests=['query']), methodKwargs['suggestionRequest'])
def testXSuggestionQueryCountAndFieldToSuggestionRequest(self): extraArguments = {'x-suggestionsQuery': ['query'], 'x-suggestionsField': ['fieldname'], 'x-suggestionsCount': ['5']} suggestion = Suggestion(count=10, field='dcterms:title', allowOverrideField=True) suggestion.addObserver(self.observer) result = retval(suggestion.executeQuery(kwarg='value', extraArguments=extraArguments)) self.assertTrue(result == self.response) self.assertEquals(['executeQuery'], self.observer.calledMethodNames()) methodKwargs = self.observer.calledMethods[0].kwargs self.assertEquals(dict(count=5, field='fieldname', suggests=['query']), methodKwargs['suggestionRequest'])
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 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 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 testEchoedExtraRequestDataOtherCountField(self): suggestion = Suggestion(count=1, field='afield', allowOverrideField=True) result = "".join(list(suggestion.echoedExtraRequestData(sruArguments={'x-suggestionsQuery': ['query'], 'x-suggestionsCount': ['2'], 'x-suggestionsField': ['field']}))) self.assertEqualsWS(""" <suggestions xmlns="http://meresco.org/namespace/suggestions"> <query>query</query> <count>2</count> <field>field</field> </suggestions>""", result)
def testEchoedExtraRequestData(self): suggestion = Suggestion(count=1, field='afi>eld') result = "".join(list(suggestion.echoedExtraRequestData(sruArguments={'x-suggestionsQuery': ['que<ry']}))) self.assertEqualsWS(""" <suggestions xmlns="http://meresco.org/namespace/suggestions"> <query>que<ry</query> <count>1</count> <field>afi>eld</field> </suggestions>""", result)
def testXSuggestionQueryToSuggestionRequest(self): extraArguments = {'x-suggestionsQuery': ['query']} suggestion = Suggestion(count=10, field='dcterms:title') suggestion.addObserver(self.observer) result = retval( suggestion.executeQuery(kwarg='value', extraArguments=extraArguments)) self.assertTrue(result == self.response) self.assertEqual(['executeQuery'], self.observer.calledMethodNames()) methodKwargs = self.observer.calledMethods[0].kwargs self.assertEqual( dict(count=10, field='dcterms:title', suggests=['query']), methodKwargs['suggestionRequest'])
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 testNoSuggestionQuery(self): extraArguments = { 'x-suggestionsQuery': [''], 'x-suggestionsField': ['fieldname'], 'x-suggestionsCount': ['5'] } suggestion = Suggestion(count=10, field='dcterms:title', allowOverrideField=False) suggestion.addObserver(self.observer) result = retval( suggestion.executeQuery(kwarg='value', extraArguments=extraArguments)) self.assertEqual(['executeQuery'], self.observer.calledMethodNames()) methodKwargs = self.observer.calledMethods[0].kwargs self.assertEqual(None, methodKwargs['suggestionRequest'])
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 testEchoedExtraRequestData(self): suggestion = Suggestion(count=1, field='afi>eld') result = "".join( list( suggestion.echoedExtraRequestData( sruArguments={ 'x-suggestionsQuery': ['que<ry'], 'x-suggestMode': ['SUGGEST_MORE_POPULAR'] }))) self.assertEqualsWS( """ <suggestions xmlns="http://meresco.org/namespace/suggestions"> <query>que<ry</query> <count>1</count> <field>afi>eld</field> <mode>SUGGEST_MORE_POPULAR</mode> </suggestions>""", result)
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 testEchoedExtraRequestDataOtherCountField(self): suggestion = Suggestion(count=1, field='afield', allowOverrideField=True) result = "".join( list( suggestion.echoedExtraRequestData( sruArguments={ 'x-suggestionsQuery': ['query'], 'x-suggestionsCount': ['2'], 'x-suggestionsField': ['field'] }))) self.assertEqualsWS( """ <suggestions xmlns="http://meresco.org/namespace/suggestions"> <query>query</query> <count>2</count> <field>field</field> </suggestions>""", result)
def testXSuggestionQueryCountAndFieldToSuggestionRequest(self): extraArguments = { 'x-suggestionsQuery': ['query'], 'x-suggestionsField': ['fieldname'], 'x-suggestionsCount': ['5'], 'x-suggestMode': ['SUGGEST_MORE_POPULAR'] } suggestion = Suggestion(count=10, field='dcterms:title', allowOverrideField=True) suggestion.addObserver(self.observer) result = retval( suggestion.executeQuery(kwarg='value', extraArguments=extraArguments)) self.assertTrue(result == self.response) self.assertEqual(['executeQuery'], self.observer.calledMethodNames()) methodKwargs = self.observer.calledMethods[0].kwargs self.assertEqual( dict(count=5, field='fieldname', mode='SUGGEST_MORE_POPULAR', suggests=['query']), methodKwargs['suggestionRequest'])
def testExecuteQueryWithoutExtraArguments(self): suggestion = Suggestion(count=10, field='dcterms:title') suggestion.addObserver(self.observer) result = retval(suggestion.executeQuery(kwarg='value')) self.assertEquals(['executeQuery'], self.observer.calledMethodNames()) self.assertTrue(result == self.response)
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.assertEquals([], responseData)
def testExecuteQueryWithoutExtraArguments(self): suggestion = Suggestion(count=10, field='dcterms:title') suggestion.addObserver(self.observer) result = retval(suggestion.executeQuery(kwarg='value')) self.assertEqual(['executeQuery'], self.observer.calledMethodNames()) self.assertTrue(result == self.response)