예제 #1
0
 def testFacetFieldFilter(self):
     context = Dummy()
     request = TestRequest(form={'facet.field': 'foo'})
     fields = dict(foo={'foo': 2, 'bar': 4, '': 6, 'nil': 0})
     # without a filter all values are included
     info = convertFacets(fields, context, request)
     self.assertEqual(len(info), 1)
     self.assertEqual([(c['name'], c['count']) for c in info[0]['counts']], [
         ('', 6),
         ('bar', 4),
         ('foo', 2),
         ('nil', 0),
     ])
     # let's filter out zero counts
     filter = lambda name, count: count > 0
     info = convertFacets(fields, context, request, filter=filter)
     self.assertEqual(len(info), 1)
     self.assertEqual([(c['name'], c['count']) for c in info[0]['counts']], [
         ('', 6),
         ('bar', 4),
         ('foo', 2),
     ])
     # and also unnamed facets
     filter = lambda name, count: name and count > 0
     info = convertFacets(fields, context, request, filter=filter)
     self.assertEqual(len(info), 1)
     self.assertEqual([(c['name'], c['count']) for c in info[0]['counts']], [
         ('bar', 4),
         ('foo', 2),
     ])
예제 #2
0
 def testFacetFieldFilter(self):
     context = Dummy()
     request = TestRequest(form={'facet.field': 'foo'})
     fields = dict(foo={'foo': 2, 'bar': 4, '': 6, 'nil': 0})
     # without a filter all values are included
     info = convertFacets(fields, context, request)
     self.assertEqual(len(info), 1)
     self.assertEqual([(c['name'], c['count']) for c in info[0]['counts']],
                      [
                          ('', 6),
                          ('bar', 4),
                          ('foo', 2),
                          ('nil', 0),
                      ])
     # let's filter out zero counts
     filter = lambda name, count: count > 0
     info = convertFacets(fields, context, request, filter=filter)
     self.assertEqual(len(info), 1)
     self.assertEqual([(c['name'], c['count']) for c in info[0]['counts']],
                      [
                          ('', 6),
                          ('bar', 4),
                          ('foo', 2),
                      ])
     # and also unnamed facets
     filter = lambda name, count: name and count > 0
     info = convertFacets(fields, context, request, filter=filter)
     self.assertEqual(len(info), 1)
     self.assertEqual([(c['name'], c['count']) for c in info[0]['counts']],
                      [
                          ('bar', 4),
                          ('foo', 2),
                      ])
예제 #3
0
 def testFacetFieldFilter(self):
     context = Dummy()
     request = TestRequest(form={"facet.field": "foo"})
     fields = dict(foo={"foo": 2, "bar": 4, "": 6, "nil": 0})
     # without a filter all values are included
     view = DummyView(context=context, request=request)
     info = convertFacets(fields, view)
     self.assertEqual(len(info), 1)
     self.assertEqual(
         [(c["name"], c["count"]) for c in info[0]["counts"]],
         [("", 6), ("bar", 4), ("foo", 2), ("nil", 0)],
     )
     # let's filter out zero counts
     filter = lambda name, count: count > 0
     info = convertFacets(fields, view, filter=filter)
     self.assertEqual(len(info), 1)
     self.assertEqual(
         [(c["name"], c["count"]) for c in info[0]["counts"]],
         [("", 6), ("bar", 4), ("foo", 2)],
     )
     # and also unnamed facets
     filter = lambda name, count: name and count > 0
     info = convertFacets(fields, view, filter=filter)
     self.assertEqual(len(info), 1)
     self.assertEqual(
         [(c["name"], c["count"]) for c in info[0]["counts"]],
         [("bar", 4), ("foo", 2)],
     )
 def testEmptyFacetField(self):
     context = Dummy()
     request = TestRequest(form={"facet.field": "Subject"})
     fields = dict(Subject=dict())
     view = DummyView(context=context, request=request)
     info = convertFacets(fields, view)
     self.assertEqual(info, [])
예제 #5
0
 def testConvertFacetResponse(self):
     response = SolrResponse(getData("facet_xml_response.txt"))
     fields = response.facet_counts["facet_fields"]
     view = DummyView(request=TestRequest())
     info = convertFacets(fields, view=view)
     # the info should consist of 2 dicts with
     # `counts`, `name` and `title` keys
     self.assertEqual([sorted(i) for i in info],
                      [["counts", "name", "title"]] * 2)
     # next let's check the field names
     self.assertEqual([i["title"] for i in info], ["cat", "inStock"])
     # and the fields contents
     cat, inStock = info
     self.assertEqual(cat["title"], "cat")
     self.assertEqual(
         [(c["name"], c["title"], c["count"]) for c in cat["counts"]],
         [
             ("search", "Title of Search", 1),
             ("software", "Title of Software", 1),
             ("electronics", "Title of Electronics", 0),
             ("monitor", "Title of Monitor", 0),
         ],
     )
     self.assertEqual(inStock["title"], "inStock")
     self.assertEqual([(c["name"], c["count"]) for c in inStock["counts"]],
                      [("true", 1)])
예제 #6
0
 def testEmptyFacetField(self):
     context = Dummy()
     request = TestRequest(form={'facet.field': 'Subject'})
     fields = dict(Subject=dict())
     view = DummyView(context=context, request=request)
     info = convertFacets(fields, view)
     self.assertEqual(info, [])
예제 #7
0
 def testFacetLinksWithMultipleFacets(self):
     context = Dummy()
     request = TestRequest(form={'facet.field': ['foo', 'bar']})
     fields = dict(foo=dict(Document=10, Folder=3, Event=5),
                   bar=dict(private=2, published=4))
     view = DummyView(context=context, request=request)
     info = convertFacets(fields, view)
     self.assertEqual(len(info), 2)
     # check the facets for 'bar'
     bars = info[1]['counts']
     self.assertEqual(len(bars), 2)
     params = lambda query: sorted(map(unquote, query.split('&')))
     self.assertEqual(params(bars[0]['query']), [
         'facet.field=foo', 'fq=bar:"published"'])
     self.assertEqual(params(bars[1]['query']), [
         'facet.field=foo', 'fq=bar:"private"'])
     # and also the one for 'foo'
     foos = info[0]['counts']
     self.assertEqual(len(foos), 3)
     self.assertEqual(params(foos[0]['query']), [
         'facet.field=bar', 'fq=foo:"Document"'])
     self.assertEqual(params(foos[1]['query']), [
         'facet.field=bar', 'fq=foo:"Event"'])
     self.assertEqual(params(foos[2]['query']), [
         'facet.field=bar', 'fq=foo:"Folder"'])
 def testFacetLinksWithMultipleSelectedFacets(self):
     context = Dummy()
     request = TestRequest(form={"facet.field": "foo", "fq": "bar:private"})
     fields = dict(foo=dict(Document=3, Folder=2))
     view = DummyView(context=context, request=request)
     info = convertFacets(fields, view)
     self.assertEqual(len(info), 1)
     counts = info[0]["counts"]
     params = lambda query: sorted(map(unquote, query.split("&")))
     self.assertEqual(params(counts[0]["query"]), ["fq=bar:private", 'fq=foo:"Document"'])
     self.assertEqual(params(counts[1]["query"]), ["fq=bar:private", 'fq=foo:"Folder"'])
 def testFacetFieldFilter(self):
     context = Dummy()
     request = TestRequest(form={"facet.field": "foo"})
     fields = dict(foo={"foo": 2, "bar": 4, "": 6, "nil": 0})
     # without a filter all values are included
     view = DummyView(context=context, request=request)
     info = convertFacets(fields, view)
     self.assertEqual(len(info), 1)
     self.assertEqual(
         [(c["name"], c["count"]) for c in info[0]["counts"]], [("", 6), ("bar", 4), ("foo", 2), ("nil", 0)]
     )
     # let's filter out zero counts
     filter = lambda name, count: count > 0
     info = convertFacets(fields, view, filter=filter)
     self.assertEqual(len(info), 1)
     self.assertEqual([(c["name"], c["count"]) for c in info[0]["counts"]], [("", 6), ("bar", 4), ("foo", 2)])
     # and also unnamed facets
     filter = lambda name, count: name and count > 0
     info = convertFacets(fields, view, filter=filter)
     self.assertEqual(len(info), 1)
     self.assertEqual([(c["name"], c["count"]) for c in info[0]["counts"]], [("bar", 4), ("foo", 2)])
예제 #10
0
 def testFacetLinksWithMultipleSelectedFacets(self):
     context = Dummy()
     request = TestRequest(form={'facet.field': 'foo', 'fq': 'bar:private'})
     fields = dict(foo=dict(Document=3, Folder=2))
     info = convertFacets(fields, context, request)
     self.assertEqual(len(info), 1)
     counts = info[0]['counts']
     params = lambda query: sorted(map(unquote, query.split('&')))
     self.assertEqual(params(counts[0]['query']),
                      ['fq=bar:private', 'fq=foo:"Document"'])
     self.assertEqual(params(counts[1]['query']),
                      ['fq=bar:private', 'fq=foo:"Folder"'])
예제 #11
0
 def testFacetLinksWithMultipleSelectedFacets(self):
     context = Dummy()
     request = TestRequest(form={'facet.field': 'foo', 'fq': 'bar:private'})
     fields = dict(foo=dict(Document=3, Folder=2))
     info = convertFacets(fields, context, request)
     self.assertEqual(len(info), 1)
     counts = info[0]['counts']
     params = lambda query: sorted(map(unquote, query.split('&')))
     self.assertEqual(params(counts[0]['query']), [
         'fq=bar:private', 'fq=foo:"Document"'])
     self.assertEqual(params(counts[1]['query']), [
         'fq=bar:private', 'fq=foo:"Folder"'])
예제 #12
0
 def testFacetLinksWithMultipleSelectedFacets(self):
     context = Dummy()
     request = TestRequest(form={"facet.field": "foo", "fq": "bar:private"})
     fields = dict(foo=dict(Document=3, Folder=2))
     view = DummyView(context=context, request=request)
     info = convertFacets(fields, view)
     self.assertEqual(len(info), 1)
     counts = info[0]["counts"]
     params = lambda query: sorted(map(unquote, query.split("&")))
     self.assertEqual(params(counts[0]["query"]),
                      ["fq=bar:private", 'fq=foo:"Document"'])
     self.assertEqual(params(counts[1]["query"]),
                      ["fq=bar:private", 'fq=foo:"Folder"'])
예제 #13
0
    def facets(self):
        """ prepare and return facetting info for the given SolrResponse """
        results = self.kw.get('results', None)
        fcs = getattr(results, 'facet_counts', None)
        shown_types = self.shown_types
        if results is not None and fcs is not None:

            def facet_filter(name, count):
                return name and name in shown_types and count > 0

            return convertFacets(fcs.get('facet_fields', {}), self,
                                 facet_filter)
        else:
            return None
예제 #14
0
 def testFacetLinksWithSelectedFacet(self):
     context = Dummy()
     request = TestRequest(form={"foo": "bar", "facet.field": "bar"})
     fields = dict(foo=dict(private=2, published=4))
     view = DummyView(context=context, request=request)
     info = convertFacets(fields, view)
     self.assertEqual(len(info), 1)
     counts = info[0]["counts"]
     self.assertEqual(len(counts), 2)
     params = lambda query: sorted(map(unquote, query.split("&")))
     self.assertEqual(counts[0]["name"], "published")
     self.assertEqual(params(counts[0]["query"]), ["facet.field=bar", "foo=bar", 'fq=foo:"published"'])
     self.assertEqual(counts[1]["name"], "private")
     self.assertEqual(params(counts[1]["query"]), ["facet.field=bar", "foo=bar", 'fq=foo:"private"'])
예제 #15
0
 def testFacetLinksWithSelectedFacet(self):
     context = Dummy()
     request = TestRequest(form={'foo': 'bar', 'facet.field': 'bar'})
     fields = dict(foo=dict(private=2, published=4))
     info = convertFacets(fields, context, request)
     self.assertEqual(len(info), 1)
     counts = info[0]['counts']
     self.assertEqual(len(counts), 2)
     params = lambda query: sorted(map(unquote, query.split('&')))
     self.assertEqual(counts[0]['name'], 'published')
     self.assertEqual(params(counts[0]['query']), [
         'facet.field=bar', 'foo=bar', 'fq=foo:"published"'])
     self.assertEqual(counts[1]['name'], 'private')
     self.assertEqual(params(counts[1]['query']), [
         'facet.field=bar', 'foo=bar', 'fq=foo:"private"'])
예제 #16
0
 def testFacetLinksWithSelectedFacet(self):
     context = Dummy()
     request = TestRequest(form={'foo': 'bar', 'facet.field': 'bar'})
     fields = dict(foo=dict(private=2, published=4))
     info = convertFacets(fields, context, request)
     self.assertEqual(len(info), 1)
     counts = info[0]['counts']
     self.assertEqual(len(counts), 2)
     params = lambda query: sorted(map(unquote, query.split('&')))
     self.assertEqual(counts[0]['name'], 'published')
     self.assertEqual(params(counts[0]['query']),
                      ['facet.field=bar', 'foo=bar', 'fq=foo:"published"'])
     self.assertEqual(counts[1]['name'], 'private')
     self.assertEqual(params(counts[1]['query']),
                      ['facet.field=bar', 'foo=bar', 'fq=foo:"private"'])
예제 #17
0
    def testNamedFacetTitleVocabulary(self):
        """Test use of IFacetTitleVocabularyFactory registrations

        If a IFacetTitleVocabularyFactory is registered under the same name
        as the facet field, use that to look up titles

        """
        context = Dummy(facet_fields=['capsFacet'])
        request = TestRequest(form=dict(foo='bar'))
        fields = dict(capsFacet=dict(one=10, two=3, leavelowercase=5))
        info = convertFacets(fields, context, request)
        self.assertEqual(len(info), 1)
        counts = info[0]['counts']
        self.assertEqual(len(counts), 3)
        self.assertEqual(counts[0]['title'], 'ONE')
        self.assertEqual(counts[1]['title'], 'leavelowercase')
        self.assertEqual(counts[2]['title'], 'TWO')
예제 #18
0
 def testConvertFacets(self):
     fields = dict(
         portal_type=dict(Document=10, Folder=3, Event=5, Topic=2))
     info = convertFacets(fields, request=TestRequest())
     # the info should consist of 1 dict with `field` and `counts` keys
     self.assertEqual([sorted(i) for i in info], [['counts', 'title']] * 1)
     # next let's check the field names
     self.assertEqual([i['title'] for i in info], ['portal_type'])
     # and the fields contents
     types, = info
     self.assertEqual(types['title'], 'portal_type')
     self.assertEqual([(c['name'], c['title'], c['count'])
                       for c in types['counts']],
                      [('Document', 'Title of Document', 10),
                       ('Event', 'Title of Event', 5),
                       ('Folder', 'Title of Folder', 3),
                       ('Topic', 'Title of Topic', 2)])
예제 #19
0
    def testNamedFacetTitleVocabulary(self):
        """Test use of IFacetTitleVocabularyFactory registrations

        If a IFacetTitleVocabularyFactory is registered under the same name
        as the facet field, use that to look up titles

        """
        context = Dummy(facet_fields=['capsFacet'])
        request = TestRequest(form=dict(foo='bar'))
        fields = dict(capsFacet=dict(one=10, two=3, leavelowercase=5))
        info = convertFacets(fields, context, request)
        self.assertEqual(len(info), 1)
        counts = info[0]['counts']
        self.assertEqual(len(counts), 3)
        self.assertEqual(counts[0]['title'], 'ONE')
        self.assertEqual(counts[1]['title'], 'leavelowercase')
        self.assertEqual(counts[2]['title'], 'TWO')
예제 #20
0
 def testFacetLinks(self):
     context = Dummy(facet_fields=["portal_type"])
     request = TestRequest(form=dict(foo="bar"))
     fields = dict(portal_type=dict(Document=10, Folder=3, Event=5))
     view = DummyView(context=context, request=request)
     info = convertFacets(fields, view)
     # let's check queries for the one and only facet field
     self.assertEqual(len(info), 1)
     counts = info[0]["counts"]
     self.assertEqual(len(counts), 3)
     params = lambda query: sorted(map(unquote, query.split("&")))
     self.assertEqual(counts[0]["name"], "Document")
     self.assertEqual(params(counts[0]["query"]), ["foo=bar", 'fq=portal_type:"Document"'])
     self.assertEqual(counts[1]["name"], "Event")
     self.assertEqual(params(counts[1]["query"]), ["foo=bar", 'fq=portal_type:"Event"'])
     self.assertEqual(counts[2]["name"], "Folder")
     self.assertEqual(params(counts[2]["query"]), ["foo=bar", 'fq=portal_type:"Folder"'])
예제 #21
0
 def testConvertFacets(self):
     fields = dict(portal_type=dict(Document=10,
         Folder=3, Event=5, Topic=2))
     info = convertFacets(fields, request=TestRequest())
     # the info should consist of 1 dict with `field` and `counts` keys
     self.assertEqual([sorted(i) for i in info], [['counts', 'title']] * 1)
     # next let's check the field names
     self.assertEqual([i['title'] for i in info], ['portal_type'])
     # and the fields contents
     types, = info
     self.assertEqual(types['title'], 'portal_type')
     self.assertEqual(
         [(c['name'], c['title'], c['count']) for c in types['counts']],
         [('Document', 'Title of Document', 10),
          ('Event', 'Title of Event', 5),
          ('Folder', 'Title of Folder', 3),
          ('Topic', 'Title of Topic', 2)])
예제 #22
0
    def testNamedFacetTitleVocabulary(self):
        """Test use of IFacetTitleVocabularyFactory registrations

        If a IFacetTitleVocabularyFactory is registered under the same name
        as the facet field, use that to look up titles

        """
        context = Dummy(facet_fields=["capsFacet"])
        request = TestRequest(form=dict(foo="bar"))
        fields = dict(capsFacet=dict(one=10, two=3, leavelowercase=5))
        view = DummyView(context=context, request=request)
        info = convertFacets(fields, view)
        self.assertEqual(len(info), 1)
        counts = info[0]["counts"]
        self.assertEqual(len(counts), 3)
        self.assertEqual(counts[0]["title"], "ONE")
        self.assertEqual(counts[1]["title"], "leavelowercase")
        self.assertEqual(counts[2]["title"], "TWO")
예제 #23
0
    def testNamedFacetTitleVocabulary(self):
        """Test use of IFacetTitleVocabularyFactory registrations

        If a IFacetTitleVocabularyFactory is registered under the same name
        as the facet field, use that to look up titles

        """
        context = Dummy(facet_fields=["capsFacet"])
        request = TestRequest(form=dict(foo="bar"))
        fields = dict(capsFacet=dict(one=10, two=3, leavelowercase=5))
        view = DummyView(context=context, request=request)
        info = convertFacets(fields, view)
        self.assertEqual(len(info), 1)
        counts = info[0]["counts"]
        self.assertEqual(len(counts), 3)
        self.assertEqual(counts[0]["title"], "ONE")
        self.assertEqual(counts[1]["title"], "leavelowercase")
        self.assertEqual(counts[2]["title"], "TWO")
예제 #24
0
 def testFacetLinks(self):
     context = Dummy(facet_fields=['portal_type'])
     request = TestRequest(form=dict(foo='bar'))
     fields = dict(portal_type=dict(Document=10, Folder=3, Event=5))
     info = convertFacets(fields, context, request)
     # let's check queries for the one and only facet field
     self.assertEqual(len(info), 1)
     counts = info[0]['counts']
     self.assertEqual(len(counts), 3)
     params = lambda query: sorted(map(unquote, query.split('&')))
     self.assertEqual(counts[0]['name'], 'Document')
     self.assertEqual(params(counts[0]['query']), [
         'foo=bar', 'fq=portal_type:"Document"'])
     self.assertEqual(counts[1]['name'], 'Event')
     self.assertEqual(params(counts[1]['query']), [
         'foo=bar', 'fq=portal_type:"Event"'])
     self.assertEqual(counts[2]['name'], 'Folder')
     self.assertEqual(params(counts[2]['query']), [
         'foo=bar', 'fq=portal_type:"Folder"'])
예제 #25
0
 def testFacetLinks(self):
     context = Dummy(facet_fields=['portal_type'])
     request = TestRequest(form=dict(foo='bar'))
     fields = dict(portal_type=dict(Document=10, Folder=3, Event=5))
     info = convertFacets(fields, context, request)
     # let's check queries for the one and only facet field
     self.assertEqual(len(info), 1)
     counts = info[0]['counts']
     self.assertEqual(len(counts), 3)
     params = lambda query: sorted(map(unquote, query.split('&')))
     self.assertEqual(counts[0]['name'], 'Document')
     self.assertEqual(params(counts[0]['query']),
                      ['foo=bar', 'fq=portal_type:"Document"'])
     self.assertEqual(counts[1]['name'], 'Event')
     self.assertEqual(params(counts[1]['query']),
                      ['foo=bar', 'fq=portal_type:"Event"'])
     self.assertEqual(counts[2]['name'], 'Folder')
     self.assertEqual(params(counts[2]['query']),
                      ['foo=bar', 'fq=portal_type:"Folder"'])
예제 #26
0
 def testConvertFacetResponse(self):
     response = SolrResponse(getData('facet_xml_response.txt'))
     fields = response.facet_counts['facet_fields']
     info = convertFacets(fields, request=TestRequest())
     # the info should consist of 2 dicts with `field` and `counts` keys
     self.assertEqual([sorted(i) for i in info], [['counts', 'title']] * 2)
     # next let's check the field names
     self.assertEqual([i['title'] for i in info], ['cat', 'inStock'])
     # and the fields contents
     cat, inStock = info
     self.assertEqual(cat['title'], 'cat')
     self.assertEqual([(c['name'], c['title'], c['count'])
                       for c in cat['counts']],
                      [('search', 'Title of Search', 1),
                       ('software', 'Title of Software', 1),
                       ('electronics', 'Title of Electronics', 0),
                       ('monitor', 'Title of Monitor', 0)])
     self.assertEqual(inStock['title'], 'inStock')
     self.assertEqual([(c['name'], c['count']) for c in inStock['counts']],
                      [('true', 1)])
예제 #27
0
 def testFacetLinks(self):
     context = Dummy(facet_fields=["portal_type"])
     request = TestRequest(form=dict(foo="bar"))
     fields = dict(portal_type=dict(Document=10, Folder=3, Event=5))
     view = DummyView(context=context, request=request)
     info = convertFacets(fields, view)
     # let's check queries for the one and only facet field
     self.assertEqual(len(info), 1)
     counts = info[0]["counts"]
     self.assertEqual(len(counts), 3)
     params = lambda query: sorted(map(unquote, query.split("&")))
     self.assertEqual(counts[0]["name"], "Document")
     self.assertEqual(params(counts[0]["query"]),
                      ["foo=bar", 'fq=portal_type:"Document"'])
     self.assertEqual(counts[1]["name"], "Event")
     self.assertEqual(params(counts[1]["query"]),
                      ["foo=bar", 'fq=portal_type:"Event"'])
     self.assertEqual(counts[2]["name"], "Folder")
     self.assertEqual(params(counts[2]["query"]),
                      ["foo=bar", 'fq=portal_type:"Folder"'])
예제 #28
0
 def testFacetLinksWithSelectedFacet(self):
     context = Dummy()
     request = TestRequest(form={"foo": "bar", "facet.field": "bar"})
     fields = dict(foo=dict(private=2, published=4))
     view = DummyView(context=context, request=request)
     info = convertFacets(fields, view)
     self.assertEqual(len(info), 1)
     counts = info[0]["counts"]
     self.assertEqual(len(counts), 2)
     params = lambda query: sorted(map(unquote, query.split("&")))
     self.assertEqual(counts[0]["name"], "published")
     self.assertEqual(
         params(counts[0]["query"]),
         ["facet.field=bar", "foo=bar", 'fq=foo:"published"'],
     )
     self.assertEqual(counts[1]["name"], "private")
     self.assertEqual(
         params(counts[1]["query"]),
         ["facet.field=bar", "foo=bar", 'fq=foo:"private"'],
     )
예제 #29
0
 def testConvertFacets(self):
     fields = dict(portal_type=dict(Document=10, Folder=3, Event=5, Topic=2))
     view = DummyView(context=Dummy(), request=TestRequest())
     info = convertFacets(fields, view=view)
     # the info should consist of 1 dict with
     # `counts`, `name` and `title` keys
     self.assertEqual([sorted(i) for i in info], [["counts", "name", "title"]] * 1)
     # next let's check the field names
     self.assertEqual([i["title"] for i in info], ["portal_type"])
     # and the fields contents
     types, = info
     self.assertEqual(types["title"], "portal_type")
     self.assertEqual(
         [(c["name"], c["title"], c["count"]) for c in types["counts"]],
         [
             ("Document", "Title of Document", 10),
             ("Event", "Title of Event", 5),
             ("Folder", "Title of Folder", 3),
             ("Topic", "Title of Topic", 2),
         ],
     )
예제 #30
0
 def testConvertFacetResponse(self):
     response = SolrResponse(getData('facet_xml_response.txt'))
     fields = response.facet_counts['facet_fields']
     info = convertFacets(fields, request=TestRequest())
     # the info should consist of 2 dicts with `field` and `counts` keys
     self.assertEqual([sorted(i) for i in info], [['counts', 'title']] * 2)
     # next let's check the field names
     self.assertEqual([i['title'] for i in info], ['cat', 'inStock'])
     # and the fields contents
     cat, inStock = info
     self.assertEqual(cat['title'], 'cat')
     self.assertEqual(
         [(c['name'], c['title'], c['count']) for c in cat['counts']],
         [('search', 'Title of Search', 1),
          ('software', 'Title of Software', 1),
          ('electronics', 'Title of Electronics', 0),
          ('monitor', 'Title of Monitor', 0)])
     self.assertEqual(inStock['title'], 'inStock')
     self.assertEqual(
         [(c['name'], c['count']) for c in inStock['counts']],
         [('true', 1)])
예제 #31
0
 def testConvertFacets(self):
     fields = dict(
         portal_type=dict(Document=10, Folder=3, Event=5, Topic=2))
     view = DummyView(context=Dummy(), request=TestRequest())
     info = convertFacets(fields, view=view)
     # the info should consist of 1 dict with
     # `counts`, `name` and `title` keys
     self.assertEqual([sorted(i) for i in info],
                      [["counts", "name", "title"]] * 1)
     # next let's check the field names
     self.assertEqual([i["title"] for i in info], ["portal_type"])
     # and the fields contents
     (types, ) = info
     self.assertEqual(types["title"], "portal_type")
     self.assertEqual(
         [(c["name"], c["title"], c["count"]) for c in types["counts"]],
         [
             ("Document", "Title of Document", 10),
             ("Event", "Title of Event", 5),
             ("Folder", "Title of Folder", 3),
             ("Topic", "Title of Topic", 2),
         ],
     )
예제 #32
0
 def testConvertFacetResponse(self):
     response = SolrResponse(getData("facet_xml_response.txt"))
     fields = response.facet_counts["facet_fields"]
     view = DummyView(request=TestRequest())
     info = convertFacets(fields, view=view)
     # the info should consist of 2 dicts with
     # `counts`, `name` and `title` keys
     self.assertEqual([sorted(i) for i in info], [["counts", "name", "title"]] * 2)
     # next let's check the field names
     self.assertEqual([i["title"] for i in info], ["cat", "inStock"])
     # and the fields contents
     cat, inStock = info
     self.assertEqual(cat["title"], "cat")
     self.assertEqual(
         [(c["name"], c["title"], c["count"]) for c in cat["counts"]],
         [
             ("search", "Title of Search", 1),
             ("software", "Title of Software", 1),
             ("electronics", "Title of Electronics", 0),
             ("monitor", "Title of Monitor", 0),
         ],
     )
     self.assertEqual(inStock["title"], "inStock")
     self.assertEqual([(c["name"], c["count"]) for c in inStock["counts"]], [("true", 1)])
예제 #33
0
 def testEmptyFacetField(self):
     context = Dummy()
     request = TestRequest(form={'facet.field': 'Subject'})
     fields = dict(Subject=dict())
     info = convertFacets(fields, context, request)
     self.assertEqual(info, [])