コード例 #1
0
 def testGeoSpatialFieldCanBeUpdated(self):
     self.portal.invokeFactory("Location", id="location1", title="Loc 1")
     self.portal.location1.geolocation = "50.2,-7.1"
     self.portal.location1.reindexObject()
     self.maintenance.reindex()
     results = solrSearchResults(
         portal_type="Location",
         sfield="geolocation",
         fq="{!geofilt}",
         pt="50.2,-7.1",
         d=0,
     )
     self.assertEqual(sorted([r.path_string for r in results]),
                      ["/plone/location1"])
     self.portal.location1.geolocation = "10.1, -8.4"
     self.portal.location1.reindexObject()
     self.maintenance.reindex()
     results = solrSearchResults(
         portal_type="Location",
         sfield="geolocation",
         fq="{!geofilt}",
         pt="10.1, -8.4",
         d=0,
     )
     self.assertEqual(sorted([r.path_string for r in results]),
                      ["/plone/location1"])
コード例 #2
0
 def testFacetOrder(self):
     request = self.app.REQUEST
     request.form['SearchableText'] = 'News'
     request.form['facet'] = 'true'
     request.form['facet_field'] = ['portal_type', 'review_state']
     alsoProvides(request, IThemeSpecific)
     view = getMultiAdapter((self.portal, request), name='search-facets')
     view = view.__of__(self.portal)     # needed to traverse `view/`
     results = solrSearchResults(request)
     output = view(results=results)
     # the displayed facets should match the given order...
     self.checkOrder(
         output,
         'portal-searchfacets',
         'Content type',
         'Review state'
     )
     # let's also try the other way round...
     request.form['facet_field'] = ['review_state', 'portal_type']
     results = solrSearchResults(request)
     output = view(results=results)
     self.checkOrder(
         output,
         'portal-searchfacets',
         'Review state',
         'Content type'
     )
コード例 #3
0
    def testGeoSpatialSearchSortByDistance(self):
        self.portal.invokeFactory("Location", id="location1", title="Loc 1")
        self.portal.location1.geolocation = "50,1"
        self.portal.location1.reindexObject()
        self.portal.invokeFactory("Location", id="location2", title="Loc 2")
        self.portal.location2.geolocation = "60,1"
        self.portal.location2.reindexObject()
        self.maintenance.reindex()

        # Query: 52,1 | 50,1 (locaction1) < 60,1 (location2)
        results = solrSearchResults(fq="{!bbox}",
                                    sfield="geolocation",
                                    pt="52,1",
                                    d=100,
                                    sort="geodist() desc")
        self.assertEqual(
            sorted([r.path_string for r in results]),
            ["/plone/location2", "/plone/location1"],
        )

        # Query: 58,1 | 60,1 (locaction2) < 50,1 (location1)
        results = solrSearchResults(fq="{!bbox}",
                                    sfield="geolocation",
                                    pt="58,1",
                                    d=100,
                                    sort="geodist() asc")
        self.assertEqual(
            sorted([r.path_string for r in results]),
            ["/plone/location1", "/plone/location2"],
        )
コード例 #4
0
    def testGeoSpatialFieldCanBeDeleted(self):
        self.portal.invokeFactory("Location", id="location1", title="Loc 1")
        self.portal.location1.geolocation = "50.2,-7.1"
        self.portal.location1.reindexObject()
        self.maintenance.reindex()
        results = solrSearchResults(
            portal_type="Location",
            sfield="geolocation",
            fq="{!geofilt}",
            pt="50.2,-7.1",
            d=0,
        )
        self.assertEqual(sorted([r.path_string for r in results]),
                         ["/plone/location1"])
        self.portal.location1.geolocation = None
        self.portal.location1.reindexObject()
        self.maintenance.reindex()
        results = solrSearchResults(
            portal_type="Location",
            sfield="geolocation",
            fq="{!geofilt}",
            pt="50.2,-7.1",
            d=0,
        )
        self.assertEqual(list(results), [])
        results = solrSearchResults(portal_type="Location")
        from Missing import Missing

        self.assertEqual(sorted([r.path_string for r in results]),
                         ["/plone/location1"])
        self.assertTrue(isinstance(results[0].geolocation, Missing))
コード例 #5
0
 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"])
コード例 #6
0
 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"])
コード例 #7
0
 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'])
コード例 #8
0
 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'])
コード例 #9
0
 def testGeoSpatialTypeIsIndexed(self):
     self.portal.invokeFactory("Location", id="location1", title="Loc 1")
     self.portal.location1.geolocation = "50.2,-7.1"
     self.portal.location1.reindexObject()
     self.maintenance.reindex()
     results = solrSearchResults(portal_type="Location")
     self.assertEqual(sorted([r.path_string for r in results]),
                      ["/plone/location1"])
コード例 #10
0
 def testFacetOrder(self):
     request = self.app.REQUEST
     request.form["SearchableText"] = "News"
     request.form["facet"] = "true"
     request.form["facet_field"] = ["portal_type", "review_state"]
     alsoProvides(request, IThemeSpecific)
     view = getMultiAdapter((self.portal, request), name="search-facets")
     view = view.__of__(self.portal)  # needed to traverse `view/`
     results = solrSearchResults(request)
     output = view(results=results)
     # the displayed facets should match the given order...
     self.checkOrder(output, "portal-searchfacets", "Content type", "Review state")
     # let's also try the other way round...
     request.form["facet_field"] = ["review_state", "portal_type"]
     results = solrSearchResults(request)
     output = view(results=results)
     self.checkOrder(output, "portal-searchfacets", "Review state", "Content type")
コード例 #11
0
 def testFacetOrder(self):
     self.request.form["SearchableText"] = "News"
     self.request.form["facet"] = "true"
     self.request.form["facet_field"] = ["portal_type", "review_state"]
     alsoProvides(self.request, IThemeSpecific)
     view = getMultiAdapter((self.portal, self.request), name="search-facets")
     if hasattr(view, "__of__"):
         view = view.__of__(self.portal)
     results = solrSearchResults(self.request)
     output = view(results=results)
     # the displayed facets should match the given order...
     self.checkOrder(output, "portal-searchfacets", "Content type", "Review state")
     # let's also try the other way round...
     self.request.form["facet_field"] = ["review_state", "portal_type"]
     results = solrSearchResults(self.request)
     output = view(results=results)
     self.checkOrder(output, "portal-searchfacets", "Review state", "Content type")
コード例 #12
0
 def testMultiFacettedSearch(self):
     setRoles(self.portal, TEST_USER_ID, ["Manager"])
     self.portal.invokeFactory("Event", id="event1", title="Welcome")
     self.maintenance.reindex()
     results = solrSearchResults(SearchableText="Welcome", facet="true", facet_field=["portal_type", "review_state"])
     self.assertEqual(sorted([r.path_string for r in results]), ["/plone/event1", "/plone/front-page"])
     facets = results.facet_counts["facet_fields"]
     self.assertEqual(facets["portal_type"]["Event"], 1)
     self.assertEqual(facets["review_state"]["published"], 1)
コード例 #13
0
ファイル: test_facets.py プロジェクト: lrowe/collective.solr
 def testUnknownFacetField(self):
     request = self.app.REQUEST
     request.form['SearchableText'] = 'News'
     request.form['facet'] = 'true'
     request.form['facet_field'] = 'foo'
     alsoProvides(request, IThemeSpecific)
     view = getMultiAdapter((self.portal, request), name='search-facets')
     view.kw = dict(results=solrSearchResults(request))
     self.assertEqual(view.facets(), [])
コード例 #14
0
 def testFacettedSearchWithRequestArguments(self):
     request = self.app.REQUEST
     request.form["SearchableText"] = "News"
     request.form["facet"] = "true"
     request.form["facet_field"] = "review_state"
     results = solrSearchResults(request)
     self.assertEqual(sorted([r.path_string for r in results]), ["/plone/news", "/plone/news/aggregator"])
     states = results.facet_counts["facet_fields"]["review_state"]
     self.assertEqual(states, dict(private=0, published=2))
コード例 #15
0
 def testGeoSpatialSearchWithLocationOutsideTheSearchBox(self):
     self.portal.invokeFactory("Location", id="location1", title="Loc 1")
     self.portal.location1.geolocation = "50.2,-7.1"
     self.portal.location1.reindexObject()
     self.maintenance.reindex()
     results = solrSearchResults(fq="{!geofilt}",
                                 sfield="geolocation",
                                 pt="80,123",
                                 d=0.2)
     self.assertEqual(sorted([r.path_string for r in results]), [])
コード例 #16
0
 def testFacettedSearchWithRequestArguments(self):
     request = self.app.REQUEST
     request.form['SearchableText'] = 'News'
     request.form['facet'] = 'true'
     request.form['facet_field'] = 'review_state'
     results = solrSearchResults(request)
     self.assertEqual(sorted([r.path_string for r in results]),
                      ['/plone/news', '/plone/news/aggregator'])
     states = results.facet_counts['facet_fields']['review_state']
     self.assertEqual(states, dict(private=0, published=2))
コード例 #17
0
 def testNoFacetFields(self):
     request = self.app.REQUEST
     request.form['SearchableText'] = 'News'
     request.form['facet'] = 'true'
     request.form['facet_field'] = []
     alsoProvides(request, IThemeSpecific)
     view = getMultiAdapter((self.portal, request), name='search-facets')
     view = view.__of__(self.portal)  # needed to traverse `view/`
     output = view(results=solrSearchResults(request))
     self.assertFalse('portal-searchfacets' in output, output)
コード例 #18
0
 def testNoFacetFields(self):
     self.request.form["SearchableText"] = "News"
     self.request.form["facet"] = "true"
     self.request.form["facet_field"] = []
     alsoProvides(self.request, IThemeSpecific)
     view = getMultiAdapter((self.portal, self.request), name="search-facets")
     if hasattr(view, "__of__"):
         view = view.__of__(self.portal)
     output = view(results=solrSearchResults(self.request))
     self.assertFalse("portal-searchfacets" in output, output)
コード例 #19
0
 def testFacettedSearchWithRequestArguments(self):
     request = self.app.REQUEST
     request.form['SearchableText'] = 'News'
     request.form['facet'] = 'true'
     request.form['facet_field'] = 'review_state'
     results = solrSearchResults(request)
     self.assertEqual(sorted([r.path_string for r in results]),
         ['/plone/news', '/plone/news/aggregator'])
     states = results.facet_counts['facet_fields']['review_state']
     self.assertEqual(states, dict(private=0, published=2))
コード例 #20
0
 def testNoFacetFields(self):
     request = self.app.REQUEST
     request.form["SearchableText"] = "News"
     request.form["facet"] = "true"
     request.form["facet_field"] = []
     alsoProvides(request, IThemeSpecific)
     view = getMultiAdapter((self.portal, request), name="search-facets")
     view = view.__of__(self.portal)  # needed to traverse `view/`
     output = view(results=solrSearchResults(request))
     self.assertFalse("portal-searchfacets" in output, output)
コード例 #21
0
 def testNoFacetFields(self):
     request = self.app.REQUEST
     request.form['SearchableText'] = 'News'
     request.form['facet'] = 'true'
     request.form['facet_field'] = []
     alsoProvides(request, IThemeSpecific)
     view = getMultiAdapter((self.portal, request), name='search-facets')
     view = view.__of__(self.portal)     # needed to traverse `view/`
     output = view(results=solrSearchResults(request))
     self.failIf('portal-searchfacets' in output, output)
コード例 #22
0
 def testFacetOrder(self):
     request = self.app.REQUEST
     request.form['SearchableText'] = 'News'
     request.form['facet'] = 'true'
     request.form['facet_field'] = ['portal_type', 'review_state']
     alsoProvides(request, IThemeSpecific)
     view = getMultiAdapter((self.portal, request), name='search-facets')
     view = view.__of__(self.portal)  # needed to traverse `view/`
     results = solrSearchResults(request)
     output = view(results=results)
     # the displayed facets should match the given order...
     self.checkOrder(output, 'portal-searchfacets', 'Content type',
                     'Review state')
     # let's also try the other way round...
     request.form['facet_field'] = ['review_state', 'portal_type']
     results = solrSearchResults(request)
     output = view(results=results)
     self.checkOrder(output, 'portal-searchfacets', 'Review state',
                     'Content type')
コード例 #23
0
 def testFacettedSearchWithFilterQuery(self):
     request = self.app.REQUEST
     request.form["SearchableText"] = "News"
     request.form["fq"] = "portal_type:Collection"
     request.form["facet"] = "true"
     request.form["facet_field"] = "review_state"
     results = solrSearchResults(request)
     self.assertEqual([r.path_string for r in results], ["/plone/news/aggregator"])
     states = results.facet_counts["facet_fields"]["review_state"]
     self.assertEqual(states, dict(private=0, published=1))
コード例 #24
0
 def testFacettedSearchWithKeywordArguments(self):
     self.setRoles(('Manager',))
     self.portal.invokeFactory('Event', id='event1', title='Welcome')
     self.maintenance.reindex()
     results = solrSearchResults(SearchableText='Welcome', facet='true',
         facet_field='portal_type')
     self.assertEqual(sorted([r.path_string for r in results]),
         ['/plone/event1', '/plone/front-page'])
     types = results.facet_counts['facet_fields']['portal_type']
     self.assertEqual(types['Document'], 1)
     self.assertEqual(types['Event'], 1)
コード例 #25
0
 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øø"])
コード例 #26
0
 def testMultiFacettedSearch(self):
     self.setRoles(('Manager',))
     self.portal.invokeFactory('Event', id='event1', title='Welcome')
     self.maintenance.reindex()
     results = solrSearchResults(SearchableText='Welcome', facet='true',
         facet_field=['portal_type', 'review_state'])
     self.assertEqual(sorted([r.path_string for r in results]),
         ['/plone/event1', '/plone/front-page'])
     facets = results.facet_counts['facet_fields']
     self.assertEqual(facets['portal_type']['Event'], 1)
     self.assertEqual(facets['review_state']['published'], 1)
コード例 #27
0
 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øø'])
コード例 #28
0
 def testFacettedSearchWithFilterQuery(self):
     request = self.app.REQUEST
     request.form['SearchableText'] = 'News'
     request.form['fq'] = 'portal_type:Collection'
     request.form['facet'] = 'true'
     request.form['facet_field'] = 'review_state'
     results = solrSearchResults(request)
     self.assertEqual([r.path_string for r in results],
         ['/plone/news/aggregator'])
     states = results.facet_counts['facet_fields']['review_state']
     self.assertEqual(states, dict(private=0, published=1))
コード例 #29
0
 def testFacettedSearchWithKeywordArguments(self):
     self.setRoles(('Manager',))
     self.portal.invokeFactory('Event', id='event1', title='Welcome')
     self.maintenance.reindex()
     results = solrSearchResults(SearchableText='Welcome', facet='true',
         facet_field='portal_type')
     self.assertEqual(sorted([r.path_string for r in results]),
         ['/plone/event1', '/plone/front-page'])
     types = results.facet_counts['facet_fields']['portal_type']
     self.assertEqual(types['Document'], 1)
     self.assertEqual(types['Event'], 1)
コード例 #30
0
 def testFacettedSearchWithFilterQuery(self):
     self._create_uf()
     self.request = self.layer["request"]
     self.request.form["SearchableText"] = "News"
     self.request.form["fq"] = "portal_type:Collection"
     self.request.form["facet"] = "true"
     self.request.form["facet_field"] = "review_state"
     results = solrSearchResults(self.request)
     self.assertEqual([r.path_string for r in results], ["/plone/news/aggregator"])
     states = results.facet_counts["facet_fields"]["review_state"]
     self.assertEqual(states, dict(private=0, published=1))
コード例 #31
0
 def testFacettedSearchWithFilterQuery(self):
     request = self.app.REQUEST
     request.form['SearchableText'] = 'News'
     request.form['fq'] = 'portal_type:Collection'
     request.form['facet'] = 'true'
     request.form['facet_field'] = 'review_state'
     results = solrSearchResults(request)
     self.assertEqual([r.path_string for r in results],
                      ['/plone/news/aggregator'])
     states = results.facet_counts['facet_fields']['review_state']
     self.assertEqual(states, dict(private=0, published=1))
コード例 #32
0
 def testMultiFacettedSearch(self):
     self.setRoles(('Manager',))
     self.portal.invokeFactory('Event', id='event1', title='Welcome')
     self.maintenance.reindex()
     results = solrSearchResults(SearchableText='Welcome', facet='true',
         facet_field=['portal_type', 'review_state'])
     self.assertEqual(sorted([r.path_string for r in results]),
         ['/plone/event1', '/plone/front-page'])
     facets = results.facet_counts['facet_fields']
     self.assertEqual(facets['portal_type']['Event'], 1)
     self.assertEqual(facets['review_state']['published'], 1)
コード例 #33
0
 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øø"]
     )
コード例 #34
0
 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øø'])
コード例 #35
0
    def test_retry_on_conflict(self):
        self.browser.open(self.layer['portal'].absolute_url())
        self.browser.getLink('Page').click()
        self.browser.getControl('Title', index=0).value = 'Foo'
        component.provideHandler(
            raise_on_first_add, (Interface, IObjectCreatedEvent,))
        self.browser.getControl('Save').click()
        self.assertEqual(len(UIDS), 2)
        self.assertEqual(len(solrSearchResults(SearchableText='Foo')), 1)

        sm = component.getSiteManager()
        sm.unregisterHandler(
            raise_on_first_add, (Interface, IObjectCreatedEvent,))
コード例 #36
0
 def testFacettedSearchWithRequestArguments(self):
     self._create_uf()
     self.request = self.layer["request"]
     self.request.form["SearchableText"] = "News"
     self.request.form["facet"] = "true"
     self.request.form["facet_field"] = "review_state"
     results = solrSearchResults(self.request)
     self.assertEqual(
         sorted([r.path_string for r in results]),
         ["/plone/news", "/plone/news/aggregator"],
     )
     states = results.facet_counts["facet_fields"]["review_state"]
     self.assertEqual(states, dict(private=0, published=2))
コード例 #37
0
 def testFacetsInformationView(self):
     setRoles(self.portal, TEST_USER_ID, ["Manager"])
     self.portal.invokeFactory("Event", id="event1", title="Welcome")
     self.maintenance.reindex()
     request = self.app.REQUEST
     request.form["SearchableText"] = "Welcome"
     request.form["facet"] = "true"
     request.form["facet_field"] = "portal_type"
     alsoProvides(request, IThemeSpecific)
     view = getMultiAdapter((self.portal, request), name="search-facets")
     view = view.__of__(self.portal)  # needed to traverse `view/`
     results = solrSearchResults(request)
     output = view(results=results)
     self.checkOrder(output, "portal-searchfacets", "Content type", "Document", "1", "Event", "1")
コード例 #38
0
 def testFacettedSearchWithKeywordArguments(self):
     setRoles(self.portal, TEST_USER_ID, ["Manager"])
     self.portal.invokeFactory("Event", id="event1", title="Welcome")
     self.maintenance.reindex()
     results = solrSearchResults(
         SearchableText="Welcome", facet="true", facet_field="portal_type"
     )
     self.assertEqual(
         sorted([r.path_string for r in results]),
         ["/plone/event1", "/plone/front-page"],
     )
     types = results.facet_counts["facet_fields"]["portal_type"]
     self.assertEqual(types["Document"], 1)
     self.assertEqual(types["Event"], 1)
コード例 #39
0
 def testFacetsInformationView(self):
     setRoles(self.portal, TEST_USER_ID, ['Manager'])
     self.portal.invokeFactory('Event', id='event1', title='Welcome')
     self.maintenance.reindex()
     request = self.app.REQUEST
     request.form['SearchableText'] = 'Welcome'
     request.form['facet'] = 'true'
     request.form['facet_field'] = 'portal_type'
     alsoProvides(request, IThemeSpecific)
     view = getMultiAdapter((self.portal, request), name='search-facets')
     view = view.__of__(self.portal)  # needed to traverse `view/`
     results = solrSearchResults(request)
     output = view(results=results)
     self.checkOrder(output, 'portal-searchfacets', 'Content type',
                     'Document', '1', 'Event', '1')
コード例 #40
0
 def testFacetsInformationView(self):
     self.setRoles(('Manager',))
     self.portal.invokeFactory('Event', id='event1', title='Welcome')
     self.maintenance.reindex()
     request = self.app.REQUEST
     request.form['SearchableText'] = 'Welcome'
     request.form['facet'] = 'true'
     request.form['facet_field'] = 'portal_type'
     alsoProvides(request, IThemeSpecific)
     view = getMultiAdapter((self.portal, request), name='search-facets')
     view = view.__of__(self.portal)     # needed to traverse `view/`
     results = solrSearchResults(request)
     output = view(results=results)
     self.checkOrder(output, 'portal-searchfacets', 'Content type',
         'Document', '1', 'Event', '1')
コード例 #41
0
 def testFacetsInformationView(self):
     setRoles(self.portal, TEST_USER_ID, ["Manager"])
     self.portal.invokeFactory("Event", id="event1", title="Welcome")
     self.maintenance.reindex()
     self.request.form["SearchableText"] = "Welcome"
     self.request.form["facet"] = "true"
     self.request.form["facet_field"] = "portal_type"
     alsoProvides(self.request, IThemeSpecific)
     view = getMultiAdapter((self.portal, self.request), name="search-facets")
     if hasattr(view, "__of__"):
         view = view.__of__(self.portal)
     results = solrSearchResults(self.request)
     output = view(results=results)
     self.checkOrder(
         output, "portal-searchfacets", "Content type", "Document", "1", "Event", "1"
     )
コード例 #42
0
 def testMultiFacettedSearch(self):
     setRoles(self.portal, TEST_USER_ID, ["Manager"])
     self.portal.invokeFactory("Event", id="event1", title="Welcome")
     self.maintenance.reindex()
     results = solrSearchResults(
         SearchableText="Welcome",
         facet="true",
         facet_field=["portal_type", "review_state"],
     )
     self.assertEqual(
         sorted([r.path_string for r in results]),
         ["/plone/event1", "/plone/front-page"],
     )
     facets = results.facet_counts["facet_fields"]
     self.assertEqual(facets["portal_type"]["Event"], 1)
     self.assertEqual(facets["review_state"]["published"], 1)
コード例 #43
0
    def test_retry_on_conflict(self):
        """ This tests transaction handling when indexing in Solr, or more
        specifically properly aborting a transaction.  To do this we'll try to
        create some content and fake a `ConflictError` shortly before the
        transaction completes.  The publisher will catch it and retry, but
        while doing so the object will get a different UID than the first time.
        Without being able to abort the transaction Solr would receive two sets
        of data and consequently return two results when searching for this
        particular piece of content later on.
        """
        self.browser.open(self.layer["portal"].absolute_url())
        self.browser.getLink("Page").click()
        self.browser.getControl("Title", index=0).value = "Foo"
        component.provideHandler(raise_on_first_add, (Interface, IObjectCreatedEvent))
        self.browser.getControl("Save").click()
        self.assertEqual(len(UIDS), 2)
        self.assertEqual(len(solrSearchResults(SearchableText="Foo")), 1)

        sm = component.getSiteManager()
        sm.unregisterHandler(raise_on_first_add, (Interface, IObjectCreatedEvent))
コード例 #44
0
 def testEmptyFacetValue(self):
     # let's artificially create an empty value;  while this is a
     # somewhat unrealistic scenario, empty values may very well occur
     # for additional custom indexes...
     self.portal.news.portal_type = ''
     self.maintenance.reindex()
     # after updating the solr index the view can be checked...
     request = self.app.REQUEST
     request.form['SearchableText'] = 'News'
     request.form['facet'] = 'true'
     request.form['facet_field'] = 'portal_type'
     alsoProvides(request, IThemeSpecific)
     view = getMultiAdapter((self.portal, request), name='search-facets')
     view = view.__of__(self.portal)  # needed to traverse `view/`
     results = solrSearchResults(request)
     output = view(results=results)
     # the empty facet value should be displayed resulting in
     # only one list item (`<dd>`)
     self.assertEqual(len(output.split('<dd>')), 2)
     # let's also make sure there are no empty filter queries
     self.assertFalse('fq=portal_type%3A&amp;' in output)
コード例 #45
0
 def testEmptyFacetValue(self):
     # let's artificially create an empty value;  while this is a
     # somewhat unrealistic scenario, empty values may very well occur
     # for additional custom indexes...
     self.portal.news.portal_type = ""
     self.maintenance.reindex()
     # after updating the solr index the view can be checked...
     self.request.form["SearchableText"] = "News"
     self.request.form["facet"] = "true"
     self.request.form["facet_field"] = "portal_type"
     alsoProvides(self.request, IThemeSpecific)
     view = getMultiAdapter((self.portal, self.request), name="search-facets")
     if hasattr(view, "__of__"):
         view = view.__of__(self.portal)
     results = solrSearchResults(self.request)
     output = view(results=results)
     # the empty facet value should be displayed resulting in
     # only one list item (`<dd>`)
     self.assertEqual(len(output.split("<dd>")), 2)
     # let's also make sure there are no empty filter queries
     self.assertFalse("fq=portal_type%3A&amp;" in output)
コード例 #46
0
 def testEmptyFacetValue(self):
     # let's artificially create an empty value;  while this is a
     # somewhat unrealistic scenario, empty values may very well occur
     # for additional custom indexes...
     self.portal.news.portal_type = ''
     self.maintenance.reindex()
     # after updating the solr index the view can be checked...
     request = self.app.REQUEST
     request.form['SearchableText'] = 'News'
     request.form['facet'] = 'true'
     request.form['facet_field'] = 'portal_type'
     alsoProvides(request, IThemeSpecific)
     view = getMultiAdapter((self.portal, request), name='search-facets')
     view = view.__of__(self.portal)     # needed to traverse `view/`
     results = solrSearchResults(request)
     output = view(results=results)
     # the empty facet value should be displayed resulting in
     # only one list item (`<dd>`)
     self.assertEqual(len(output.split('<dd>')), 2)
     # let's also make sure there are no empty filter queries
     self.failIf('fq=portal_type%3A&amp;' in output)
コード例 #47
0
 def search(**kw):
     results = solrSearchResults(SearchableText="do*", **kw)
     return sorted([r.Title for r in results])
コード例 #48
0
 def search(**kw):
     results = solrSearchResults(SearchableText='do*', **kw)
     return sorted([r.Title for r in results])