def testFacettedSearchWithUnicodeFilterQuery(self): self.portal.news.portal_type = u"Føø".encode("utf-8") self.maintenance.reindex() request = self.app.REQUEST request.form["SearchableText"] = "News" request.form["facet"] = "true" request.form["facet_field"] = "portal_type" view = SearchFacetsView(self.portal, request) view.kw = dict(results=solrSearchResults(request)) facets = view.facets() self.assertEqual(sorted([c["name"] for c in facets[0]["counts"]]), ["Collection", u"Føø"])
def testFacettedSearchWithUnicodeFilterQuery(self): self.portal.news.portal_type = u'Føø'.encode('utf-8') self.maintenance.reindex() self.request.form['SearchableText'] = 'News' self.request.form['facet'] = 'true' self.request.form['facet_field'] = 'portal_type' view = SearchFacetsView(self.portal, self.request) view.kw = dict(results=solrSearchResults(self.request)) facets = view.facets() self.assertEqual(sorted([c['name'] for c in facets[0]['counts']]), ['Collection', u'Føø'])
def testFacettedSearchWithUnicodeFilterQuery(self): self.portal.news.portal_type = u'Føø'.encode('utf-8') self.maintenance.reindex() request = self.app.REQUEST request.form['SearchableText'] = 'News' request.form['facet'] = 'true' request.form['facet_field'] = 'portal_type' view = SearchFacetsView(self.portal, request) view.kw = dict(results=solrSearchResults(request)) facets = view.facets() self.assertEqual(sorted([c['name'] for c in facets[0]['counts']]), ['Collection', u'Føø'])
def testFacettedSearchWithUnicodeFilterQuery(self): self.portal.news.portal_type = "Føø" self.maintenance.reindex() self.request.form["SearchableText"] = "News" self.request.form["facet"] = "true" self.request.form["facet_field"] = "portal_type" view = SearchFacetsView(self.portal, self.request) view.kw = dict(results=solrSearchResults(self.request)) facets = view.facets() self.assertEqual( sorted([c["name"] for c in facets[0]["counts"]]), ["Collection", u"Føø"] )
def testFacettedSearchWithDependencies(self): # facets depending on others should not show up initially request = self.app.REQUEST request.form["SearchableText"] = "News" request.form["facet"] = "true" request.form["facet_field"] = ["portal_type", "review_state:portal_type"] view = SearchFacetsView(self.portal, request) view.kw = dict(results=solrSearchResults(request)) facets = [facet["title"] for facet in view.facets()] self.assertEqual(facets, ["portal_type"]) # now again with the required facet selected request.form["fq"] = "portal_type:Collection" view.kw = dict(results=solrSearchResults(request)) facets = [facet["title"] for facet in view.facets()] self.assertEqual(facets, ["portal_type", "review_state"])
def testFacettedSearchWithDependencies(self): # facets depending on others should not show up initially request = self.app.REQUEST request.form['SearchableText'] = 'News' request.form['facet'] = 'true' request.form['facet_field'] = ['portal_type', 'review_state:portal_type'] view = SearchFacetsView(self.portal, request) view.kw = dict(results=solrSearchResults(request)) facets = [facet['title'] for facet in view.facets()] self.assertEqual(facets, ['portal_type']) # now again with the required facet selected request.form['fq'] = 'portal_type:Collection' view.kw = dict(results=solrSearchResults(request)) facets = [facet['title'] for facet in view.facets()] self.assertEqual(facets, ['portal_type', 'review_state'])
def testSelectedFacetValues(self): request = TestRequest() selected = SearchFacetsView(Dummy(), request).selected info = lambda: [(i['title'], i['value']) for i in selected()] request.form['fq'] = 'foo:"xy"' self.assertEqual(info(), [('foo', 'Title of Xy')]) request.form['fq'] = ['foo:"x"', 'bar:"y"'] self.assertEqual(info(), [('foo', 'Title of X'), ('bar', 'Title of Y')]) request.form['fq'] = ['foo:"x"', 'bar:"y"', 'bah:"z"'] self.assertEqual(info(), [('foo', 'Title of X'), ('bar', 'Title of Y'), ('bah', 'Title of Z')])
def testSelectedFacetValues(self): request = TestRequest() selected = SearchFacetsView(Dummy(), request).selected info = lambda: [(i["title"], i["value"]) for i in selected()] request.form["fq"] = 'foo:"xy"' self.assertEqual(info(), [("foo", "Title of Xy")]) request.form["fq"] = ['foo:"x"', 'bar:"y"'] self.assertEqual(info(), [("foo", "Title of X"), ("bar", "Title of Y")]) request.form["fq"] = ['foo:"x"', 'bar:"y"', 'bah:"z"'] self.assertEqual( info(), [("foo", "Title of X"), ("bar", "Title of Y"), ("bah", "Title of Z")], )
def testSelectedFacetsInformation(self): request = TestRequest() selected = SearchFacetsView(Dummy(), request).selected # initially no facets are seleted self.assertEqual(selected(), []) # so let's select one... params = lambda query: sorted(map(unquote, query.split('&'))) info = lambda: [(i['title'], params(i['query'])) for i in selected()] request.form['fq'] = 'foo:"xy"' self.assertEqual(info(), [ ('foo', ['facet.field=foo']), ]) # and then some more... request.form['fq'] = ['foo:"x"', 'bar:"y"'] self.assertEqual(info(), [ ('foo', ['facet.field=foo', 'fq=bar:"y"']), ('bar', ['facet.field=bar', 'fq=foo:"x"']), ]) request.form['fq'] = ['foo:"x"', 'bar:"y"', 'bah:"z"'] self.assertEqual(info(), [ ('foo', ['facet.field=foo', 'fq=bah:"z"', 'fq=bar:"y"']), ('bar', ['facet.field=bar', 'fq=bah:"z"', 'fq=foo:"x"']), ('bah', ['facet.field=bah', 'fq=bar:"y"', 'fq=foo:"x"']), ]) # extra parameter should be left untouched request.form['foo'] = 'bar' self.assertEqual(info(), [ ('foo', [ 'facet.field=foo', 'foo=bar', 'fq=bah:"z"', 'fq=bar:"y"']), ('bar', [ 'facet.field=bar', 'foo=bar', 'fq=bah:"z"', 'fq=foo:"x"']), ('bah', [ 'facet.field=bah', 'foo=bar', 'fq=bar:"y"', 'fq=foo:"x"']), ]) # an existing 'facet.field' parameter should be preserved del request.form['foo'] request.form['facet.field'] = 'x' self.assertEqual(info(), [ ('foo', [ 'facet.field=foo', 'facet.field=x', 'fq=bah:"z"', 'fq=bar:"y"']), ('bar', [ 'facet.field=bar', 'facet.field=x', 'fq=bah:"z"', 'fq=foo:"x"']), ('bah', [ 'facet.field=bah', 'facet.field=x', 'fq=bar:"y"', 'fq=foo:"x"']), ])
def testFacettedSearchWithDependencies(self): # facets depending on others should not show up initially self.request.form["SearchableText"] = "News" self.request.form["facet"] = "true" self.request.form["facet_field"] = ["portal_type", "review_state:portal_type"] view = SearchFacetsView(self.portal, self.request) view.kw = dict(results=solrSearchResults(self.request)) facets = [facet["title"] for facet in view.facets()] self.assertEqual(facets, ["portal_type"]) # now again with the required facet selected self.request.form["fq"] = "portal_type:Collection" view.kw = dict(results=solrSearchResults(self.request)) facets = [facet["title"] for facet in view.facets()] self.assertEqual(facets, ["portal_type", "review_state"])
def testFacettedSearchWithDependencies(self): # facets depending on others should not show up initially self.request.form['SearchableText'] = 'News' self.request.form['facet'] = 'true' self.request.form['facet_field'] = [ 'portal_type', 'review_state:portal_type' ] view = SearchFacetsView(self.portal, self.request) view.kw = dict(results=solrSearchResults(self.request)) facets = [facet['title'] for facet in view.facets()] self.assertEqual(facets, ['portal_type']) # now again with the required facet selected self.request.form['fq'] = 'portal_type:Collection' view.kw = dict(results=solrSearchResults(self.request)) facets = [facet['title'] for facet in view.facets()] self.assertEqual(facets, ['portal_type', 'review_state'])
def testEmptyFacetFieldWithZeroCounts(self): fields = dict(foo={"foo": 0, "bar": 0}) results = Dummy(facet_counts=dict(facet_fields=fields)) view = SearchFacetsView(Dummy(), TestRequest()) view.kw = dict(results=results) self.assertEqual(view.facets(), [])
def testEmptyFacetFieldWithZeroCounts(self): fields = dict(foo={'foo': 0, 'bar': 0}) results = Dummy(facet_counts=dict(facet_fields=fields)) view = SearchFacetsView(Dummy(), TestRequest()) view.kw = dict(results=results) self.assertEqual(view.facets(), [])
def testSelectedFacetsInformation(self): request = TestRequest() selected = SearchFacetsView(Dummy(), request).selected # initially no facets are seleted self.assertEqual(selected(), []) # so let's select one... params = lambda query: sorted(map(unquote, query.split("&"))) info = lambda: [(i["title"], params(i["query"])) for i in selected()] request.form["fq"] = 'foo:"xy"' self.assertEqual(info(), [("foo", ["facet.field=foo"])]) # and then some more... request.form["fq"] = ['foo:"x"', 'bar:"y"'] self.assertEqual( info(), [ ("foo", ["facet.field=foo", 'fq=bar:"y"']), ("bar", ["facet.field=bar", 'fq=foo:"x"']), ], ) request.form["fq"] = ['foo:"x"', 'bar:"y"', 'bah:"z"'] self.assertEqual( info(), [ ("foo", ["facet.field=foo", 'fq=bah:"z"', 'fq=bar:"y"']), ("bar", ["facet.field=bar", 'fq=bah:"z"', 'fq=foo:"x"']), ("bah", ["facet.field=bah", 'fq=bar:"y"', 'fq=foo:"x"']), ], ) # extra parameter should be left untouched request.form["foo"] = "bar" self.assertEqual( info(), [ ("foo", ["facet.field=foo", "foo=bar", 'fq=bah:"z"', 'fq=bar:"y"']), ("bar", ["facet.field=bar", "foo=bar", 'fq=bah:"z"', 'fq=foo:"x"']), ("bah", ["facet.field=bah", "foo=bar", 'fq=bar:"y"', 'fq=foo:"x"']), ], ) # an existing 'facet.field' parameter should be preserved del request.form["foo"] request.form["facet.field"] = "x" self.assertEqual( info(), [ ( "foo", [ "facet.field=foo", "facet.field=x", 'fq=bah:"z"', 'fq=bar:"y"' ], ), ( "bar", [ "facet.field=bar", "facet.field=x", 'fq=bah:"z"', 'fq=foo:"x"' ], ), ( "bah", [ "facet.field=bah", "facet.field=x", 'fq=bar:"y"', 'fq=foo:"x"' ], ), ], )