def test_init_with_defaults_01(self): """ test that defaults don't override inputs""" with self.app.test_request_context(): QueryForm.default_if_missing = MultiDict([('db_f', '')]) request_values = CombinedMultiDict([ImmutableMultiDict([('q', u' author:"civano"'), ('db_f', u'astronomy')]), ImmutableMultiDict([])]) test_query = QueryForm.init_with_defaults(request_values) self.assertEqual(test_query.data['db_f'], 'astronomy')
def test_init_with_defaults_04(self): """ test that defaults get set """ with self.app.test_request_context(): QueryForm.default_if_missing = MultiDict([('db_f', 'foo')]) request_values = CombinedMultiDict([ImmutableMultiDict([('q', u' author:"civano"')]), ImmutableMultiDict([])]) test_query = QueryForm.init_with_defaults(request_values) self.assertEqual(test_query.data['db_f'], 'foo')
def test_only_query(self): """basic case""" with self.app.test_request_context('/search/?q=+author%3A"civano"'): expected = deepcopy(QueryBuilderSearch.DEFAULT_COMPONENTS) expected['q'] = u'( author:"civano")' expected['ui_q'] = u' author:"civano"' form = QueryForm.init_with_defaults(request.values) self.assertEqual(QueryBuilderSearch.build(form, request.values), expected)
def test_query_with_default_params_13(self): """with article only property""" with self.app.test_request_context('/search/?q=+author%3A"civano"&db_f=astronomy&article=y'): expected = deepcopy(QueryBuilderSearch.DEFAULT_COMPONENTS) expected['q'] = u'( author:"civano") AND NOT property:NONARTICLE AND database:"astronomy"' expected['ui_q'] = u' author:"civano"' expected['ui_filters'] = [u'database:"astronomy"'] form = QueryForm.init_with_defaults(request.values) self.assertEqual(QueryBuilderSearch.build(form, request.values), expected)
def test_query_with_default_params_11(self): """with journal abbr fitler (wrong syntax)""" with self.app.test_request_context('/search/?q=+author%3A"civano"+bibstem%3A"ApJ%3B+AJ"&db_f=astronomy'): expected = deepcopy(QueryBuilderSearch.DEFAULT_COMPONENTS) expected['q'] = u'( author:"civano" bibstem:"ApJ; AJ") AND database:"astronomy"' expected['ui_q'] = u' author:"civano" bibstem:"ApJ; AJ"' expected['ui_filters'] = [u'database:"astronomy"',] form = QueryForm.init_with_defaults(request.values) self.assertEqual(QueryBuilderSearch.build(form, request.values), expected)
def test_query_with_default_params_12(self): """with refereed property""" with self.app.test_request_context('/search/?q=+author%3A"civano"&db_f=astronomy&prop_f=refereed'): expected = deepcopy(QueryBuilderSearch.DEFAULT_COMPONENTS) expected['q'] = u'( author:"civano") AND property:"refereed" AND database:"astronomy"' expected['ui_q'] = u' author:"civano"' expected['ui_filters'] = [u'property:"refereed"', u'database:"astronomy"'] form = QueryForm.init_with_defaults(request.values) self.assertEqual(QueryBuilderSearch.build(form, request.values), expected)
def test_query_with_default_params_08(self): """with date range""" with self.app.test_request_context('/search/?q=+author%3A"civano"&db_f=astronomy&month_from=09&year_from=2009&year_to=2010'): expected = deepcopy(QueryBuilderSearch.DEFAULT_COMPONENTS) expected['q'] = u'( author:"civano") AND pubdate:[2009-09-00 TO 2010-12-00] AND database:"astronomy"' expected['ui_q'] = u' author:"civano"' expected['ui_filters'] = [u'pubdate:[2009-09-00 TO 2010-12-00]', u'database:"astronomy"',] form = QueryForm.init_with_defaults(request.values) self.assertEqual(QueryBuilderSearch.build(form, request.values), expected)
def test_query_with_default_params_04(self): """2nd order query""" with self.app.test_request_context('/search/?q=hot(galaxy+clusters)&db_f=astronomy'): expected = deepcopy(QueryBuilderSearch.DEFAULT_COMPONENTS) expected['q'] = u'(hot(galaxy clusters)) AND database:"astronomy"' expected['ui_q'] = u'hot(galaxy clusters)' expected['ui_filters'] = [u'database:"astronomy"'] form = QueryForm.init_with_defaults(request.values) self.assertEqual(QueryBuilderSearch.build(form, request.values), expected)
def test_query_with_default_params_03(self): """non-default database filter""" with self.app.test_request_context('/search/?q=+author%3A"civano"&db_f=physics'): expected = deepcopy(QueryBuilderSearch.DEFAULT_COMPONENTS) expected['q'] = u'( author:"civano") AND database:"physics"' expected['ui_q'] = u' author:"civano"' expected['ui_filters'] = [u'database:"physics"'] form = QueryForm.init_with_defaults(request.values) self.assertEqual(QueryBuilderSearch.build(form, request.values), expected)
def test_query_with_default_params_02(self): """including database filter (uppercase)""" with self.app.test_request_context('/search/?q=+author%3A"civano"&db_f=ASTRONOMY'): expected = deepcopy(QueryBuilderSearch.DEFAULT_COMPONENTS) expected['q'] = u'( author:"civano") AND database:"ASTRONOMY"' expected['ui_q'] = u' author:"civano"' expected['ui_filters'] = [u'database:"ASTRONOMY"'] form = QueryForm.init_with_defaults(request.values) self.assertEqual(QueryBuilderSearch.build(form, request.values), expected)
def test_query_with_default_params_19(self): """with facet selection""" with self.app.test_request_context('/search/?q=*&db_f=astronomy&year_f=[2000 TO 2010]'): expected = deepcopy(QueryBuilderSearch.DEFAULT_COMPONENTS) expected['q'] = u'(*) AND year:[2000 TO 2010] AND database:"astronomy"' expected['ui_q'] = u'*' expected['ui_filters'] = [u'year:[2000 TO 2010]', u'database:"astronomy"',] form = QueryForm.init_with_defaults(request.values) self.assertEqual(QueryBuilderSearch.build(form, request.values), expected)
def test_query_with_default_params_16(self): """with facet selection""" with self.app.test_request_context('/search/?q=author%3A"Civano"&db_f=astronomy&aut_f=-("1%2FCivano%2C+F%2FCivano%2C Francesca M."+OR+"1%2FElvis%2C M%2FElvis%2C Martin")'): expected = deepcopy(QueryBuilderSearch.DEFAULT_COMPONENTS) expected['q'] = u'(author:"Civano") AND NOT author_facet_hier:("1/Civano, F/Civano, Francesca M." OR "1/Elvis, M/Elvis, Martin") AND database:"astronomy"' expected['ui_q'] = u'author:"Civano"' expected['ui_filters'] = [u'-author_facet_hier:("1/Civano, F/Civano, Francesca M." OR "1/Elvis, M/Elvis, Martin")', u'database:"astronomy"',] form = QueryForm.init_with_defaults(request.values) self.assertEqual(QueryBuilderSearch.build(form, request.values), expected)
def test_query_with_default_params_25(self): """test topn operator""" with self.app.test_request_context('/search/?q=+author%3A"civano"&db_f=astronomy&re_sort_type=POPULARITY&re_sort_dir=asc&topn=1000'): expected = deepcopy(QueryBuilderSearch.DEFAULT_COMPONENTS) expected['q'] = u'topn(1000, (( author:"civano") AND database:"astronomy"), "read_count asc")' expected['ui_q'] = u' author:"civano"' expected['ui_filters'] = [u'database:"astronomy"'] expected['sort'] = None form = QueryForm.init_with_defaults(request.values) actual = QueryBuilderSearch.build(form, request.values) self.assertEqual(actual, expected)
def test_query_with_default_params_22(self): """with different row count""" with self.app.test_request_context('/search/?q=+author%3A"civano"&db_f=astronomy&nr=33'): expected = deepcopy(QueryBuilderSearch.DEFAULT_COMPONENTS) expected['q'] = u'( author:"civano") AND database:"astronomy"' expected['ui_q'] = u' author:"civano"' expected['ui_filters'] = [u'database:"astronomy"'] expected['rows'] = "33" form = QueryForm.init_with_defaults(request.values) actual = QueryBuilderSearch.build(form, request.values) self.assertEqual(actual, expected)
def test_query_with_default_params_26(self): """test no fulltext""" with self.app.test_request_context('/search/?q=civano&no_ft=1'): expected = deepcopy(QueryBuilderSearch.DEFAULT_COMPONENTS) expected['q'] = u'(civano)' expected['ui_q'] = u'civano' expected['ui_filters'] = [] expected['query_fields'] = config.SOLR_SEARCH_DEFAULT_QUERY_FIELDS_METADATA_ONLY form = QueryForm.init_with_defaults(request.values) actual = QueryBuilderSearch.build(form, request.values) self.assertEqual(actual, expected)
def test_query_with_default_params_27(self): """test no fulltext""" with self.app.test_request_context('/search/?q=civano&no_ft=full^1.3'): expected = deepcopy(QueryBuilderSearch.DEFAULT_COMPONENTS) expected['q'] = u'(civano)' expected['ui_q'] = u'civano' expected['ui_filters'] = [] expected['query_fields'] = u'full^1.3' form = QueryForm.init_with_defaults(request.values) actual = QueryBuilderSearch.build(form, request.values) self.assertEqual(actual, expected)
def test_query_with_default_params_14(self): """with facet selection""" with self.app.test_request_context('/search/?q=author%3A"Civano"&aut_f=0%2FComastri%2C+A&db_f=astronomy&grant_f=0%2FNASA-HQ'): expected = deepcopy(QueryBuilderSearch.DEFAULT_COMPONENTS) expected['q'] = u'(author:"Civano") AND grant_facet_hier:"0/NASA-HQ" AND author_facet_hier:"0/Comastri, A" AND database:"astronomy"' expected['ui_q'] = u'author:"Civano"' expected['ui_filters'] = [u'grant_facet_hier:"0/NASA-HQ"', u'author_facet_hier:"0/Comastri, A"', u'database:"astronomy"'] form = QueryForm.init_with_defaults(request.values) self.assertEqual(QueryBuilderSearch.build(form, request.values), expected)
def test_query_with_default_params_17(self): """with facet selection""" with self.app.test_request_context('/search/?q=author%3A"Civano"&db_f=astronomy&aut_f=(-"1%2FCivano%2C+F%2FCivano%2C+Francesca+M."+AND+-"1%2FElvis%2C M%2FElvis%2C Martin")&bibgr_f=("CfA"+AND+"CXC")&grant_f=("0%2FNASA-HQ"+OR+"0%2FNASA-GSFC")'): expected = deepcopy(QueryBuilderSearch.DEFAULT_COMPONENTS) expected['q'] = u'(author:"Civano") AND grant_facet_hier:("0/NASA-HQ" OR "0/NASA-GSFC") AND author_facet_hier:(-"1/Civano, F/Civano, Francesca M." AND -"1/Elvis, M/Elvis, Martin") AND bibgroup_facet:("CfA" AND "CXC") AND database:"astronomy"' expected['ui_q'] = u'author:"Civano"' expected['ui_filters'] = [u'grant_facet_hier:("0/NASA-HQ" OR "0/NASA-GSFC")', u'author_facet_hier:(-"1/Civano, F/Civano, Francesca M." AND -"1/Elvis, M/Elvis, Martin")', u'bibgroup_facet:("CfA" AND "CXC")', u'database:"astronomy"',] form = QueryForm.init_with_defaults(request.values) self.assertEqual(QueryBuilderSearch.build(form, request.values), expected)
def test_query_with_default_params_24(self): """test topn operator""" self.maxDiff = None with self.app.test_request_context('/search/?q=+author%3A"civano"&db_f=astronomy&re_sort_type=DATE&re_sort_dir=desc&topn=1000'): expected = deepcopy(QueryBuilderSearch.DEFAULT_COMPONENTS) expected['q'] = u'topn(1000, (( author:"civano") AND database:"astronomy"), "pubdate_sort desc")' expected['ui_q'] = u' author:"civano"' expected['ui_filters'] = [u'database:"astronomy"'] expected['sort'] = [('pubdate_sort', 'desc'), config.SEARCH_DEFAULT_SECONDARY_SORT] form = QueryForm.init_with_defaults(request.values) actual = QueryBuilderSearch.build(form, request.values) self.assertEqual(actual, expected)
def test_query_with_default_params_20(self): """with facet components""" with self.app.test_request_context('/search/facets?q=author%3A%22civano%22&aut_f=1%2FCivano%2C+F%2FCivano%2C+F.&db_f=astronomy&facet_field=templ_aut_f&facet_prefix=1/Civano,%20F/'): expected = deepcopy(QueryBuilderSearch.DEFAULT_COMPONENTS) expected['q'] = u'(author:"civano") AND author_facet_hier:"1/Civano, F/Civano, F." AND database:"astronomy"' expected['facets'] = [('author_facet_hier', -1, 1, None, u'1/Civano, F/')] expected['facet_field_interf_id'] = u'templ_aut_f' expected['ui_q'] = u'author:"civano"' expected['ui_filters'] = [u'author_facet_hier:"1/Civano, F/Civano, F."', u'database:"astronomy"',] form = QueryForm.init_with_defaults(request.values) actual = QueryBuilderSearch.build(form, request.values, True) self.assertEqual(actual, expected)
def test_db_multi_select_validation(self): with self.app.test_request_context('/search/?q=author%3A"hoekstra%2C+h"&db_f=%28"physics"+OR+"astronomy"%29'): form = QueryForm.init_with_defaults(request.values) self.assertTrue(form.validate())