Esempio n. 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"])
Esempio n. 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'
     )
Esempio n. 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"],
        )
Esempio n. 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))
Esempio n. 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"])
Esempio n. 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"])
Esempio n. 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'])
Esempio n. 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'])
Esempio n. 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"])
Esempio n. 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")
Esempio n. 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")
Esempio n. 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)
Esempio n. 13
0
 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(), [])
Esempio n. 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))
Esempio n. 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]), [])
Esempio n. 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))
Esempio n. 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)
Esempio n. 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)
Esempio n. 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))
Esempio n. 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)
Esempio n. 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)
Esempio n. 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')
Esempio n. 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))
Esempio n. 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)
Esempio n. 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øø"])
Esempio n. 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)
Esempio n. 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øø'])
Esempio n. 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))
Esempio n. 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)
Esempio n. 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))
Esempio n. 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))
Esempio n. 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)
Esempio n. 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øø"]
     )
Esempio n. 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øø'])
Esempio n. 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,))
Esempio n. 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))
Esempio n. 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")
Esempio n. 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)
Esempio n. 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')
Esempio n. 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')
Esempio n. 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"
     )
Esempio n. 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)
    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))
Esempio n. 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)
Esempio n. 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)
Esempio n. 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)
 def search(**kw):
     results = solrSearchResults(SearchableText="do*", **kw)
     return sorted([r.Title for r in results])
 def search(**kw):
     results = solrSearchResults(SearchableText='do*', **kw)
     return sorted([r.Title for r in results])