def test_filter_empty(self): """Test filtering for empty query""" portal = self.layer['portal'] req = test_request() # Search.filter_query() will get SearchableText from form if not # passed in explicit query argument: req.form['SearchableText'] = 'spam' view = getMultiAdapter((portal, req), name=u'search') res = view.results(batch=False) self.failUnless('my-page1' in [r.getId() for r in res], 'Test document is not found in the results.') # filter_query() will return None on invalid query (no real indexes): req = test_request() req.form['garbanzo'] = 'chickpea' # just noise, no index for this view = getMultiAdapter((portal, req), name=u'search') self.assertIsNone(view.filter_query({'b_start':0, 'b_size':10})) # resulting empty query, ergo no search performed, empty result: self.assertFalse(view.results(batch=False)) # filter_query() succeeds if 1+ real index name added to request: req.form['portal_type'] = 'Document' self.assertIsNotNone(view.filter_query({'b_start':0, 'b_size':10})) res = view.results(batch=False) self.failUnless('my-page1' in [r.getId() for r in res], 'Test document is not found in the results.') # filter_query() also succeeds if 1+ real index name is in the original query: req = test_request() view = getMultiAdapter((portal, req), name=u'search') query = {'portal_type': 'Document'} self.assertEqual(view.filter_query(query), query) res = view.results(query) self.failUnless('my-page1' in [r.getId() for r in res], 'Test document is not found in the results.')
def test_filter_empty(self): """Test filtering for empty query""" portal = self.layer['portal'] req = test_request() # Search.filter_query() will get SearchableText from form if not # passed in explicit query argument: req.form['SearchableText'] = 'spam' view = getMultiAdapter((portal, req), name=u'search') res = view.results(batch=False) result_ids = [r.getId() for r in res] self.failUnless( 'my-page1' in result_ids, 'Test document is not found in the results: %r.' % result_ids) # filter_query() will return None on invalid query (no real indexes): req = test_request() req.form['garbanzo'] = 'chickpea' # just noise, no index for this view = getMultiAdapter((portal, req), name=u'search') self.assertIsNone(view.filter_query({'b_start': 0, 'b_size': 10})) # resulting empty query, ergo no search performed, empty result: self.assertFalse(view.results(batch=False)) # filter_query() succeeds if 1+ real index name added to request: req.form['portal_type'] = 'Document' self.assertIsNotNone(view.filter_query({'b_start': 0, 'b_size': 10})) res = view.results(batch=False) result_ids = [r.getId() for r in res] self.failUnless( 'my-page1' in result_ids, 'Test document is not found in the results: %r.' % result_ids) # filter_query() also succeeds if 1+ real index name is in the original query: req = test_request() view = getMultiAdapter((portal, req), name=u'search') query = {'portal_type': 'Document'} self.assertEqual(view.filter_query(query), query) res = view.results(query, batch=False) result_ids = [r.getId() for r in res] self.failUnless( 'my-page1' in result_ids, 'Test document is not found in the results: %r' % result_ids)
def test_filter_with_plone3_query(self): """Filter should ignore obsolete query parameters, not error. """ portal = self.layer['portal'] req = test_request() # Search.filter_query() will get SearchableText from form if not # passed in explicit query argument: req.form['SearchableText'] = 'jobs' req.form['Title'] = 'Human resource' req.form['Description'] = '' req.form['created'] = [DateTime('1970/02/01 00:00:00 GMT+0')] req.form['created_usage'] = 'range:min' req.form['submit'] = 'Search' view = getMultiAdapter((portal, req), name=u'search') res = view.results(batch=False) self.assertEqual([], [r for r in res])