Skip to content

Commit

Permalink
Merge pull request #71 from golnazads/master
Browse files Browse the repository at this point in the history
added warning messages for title and abstract, added unittest
  • Loading branch information
golnazads committed May 14, 2019
2 parents ecb405f + 57ac82a commit 425ae85
Show file tree
Hide file tree
Showing 2 changed files with 40 additions and 12 deletions.
40 changes: 30 additions & 10 deletions tugboat/tests/tests_unit/test_search_redirect.py
Expand Up @@ -104,38 +104,48 @@ def test_object(self):
req.args = MultiDict([('object', urllib.quote('M31'))])
req.args.update(self.append_defaults())
view = ClassicSearchRedirectView()
object_search = view.translate(req)
search = view.translate(req)
self.assertEqual('q=' + urllib.quote('object:') + '(' + urllib.quote('"M31"') + ')' +
'&sort=' + urllib.quote('date desc, bibcode desc') + '/', object_search) # single object
'&sort=' + urllib.quote('date desc, bibcode desc') + '/', search) # single object

req.args = MultiDict([('object', urllib.quote('M31\r\nM32'))])
req.args.update(self.append_defaults())
view = ClassicSearchRedirectView()
object_search = view.translate(req)
search = view.translate(req)
self.assertEqual('q=' + urllib.quote('object:') + '(' + urllib.quote('"M31" AND "M32"') + ')' +
'&sort=' + urllib.quote('date desc, bibcode desc') + '/',
object_search) # objects, newline separator
search) # objects, newline separator

req.args = MultiDict([('object', urllib.quote('M31;M32;M33'))])
req.args.update(self.append_defaults())
view = ClassicSearchRedirectView()
object_search = view.translate(req)
search = view.translate(req)
self.assertEqual('q=' + urllib.quote('object:') + '(' + urllib.quote('"M31" AND "M32" AND "M33"') + ')' +
'&sort=' + urllib.quote('date desc, bibcode desc') + '/',
object_search) # object, semicolor separator
search) # object, semicolor separator

def test_title(self):
"""title field"""
req = Request('get', 'http://test.test?')
req.prepare()
req.mimetype = None

req.args = MultiDict([('title', urllib.quote('ADS'))])
req.args.update(self.append_defaults())
view = ClassicSearchRedirectView()
object_search = view.translate(req)
search = view.translate(req)
self.assertEqual('q=' +
urllib.quote('title:') + '(' + urllib.quote('ADS') + ')' +
'&sort=' + urllib.quote('date desc, bibcode desc') + '/', object_search) # single object
'&sort=' + urllib.quote('date desc, bibcode desc') + '/', search) # single object

req.args = MultiDict([('title', urllib.quote('ADS Kurtz')), ('ttl_logic', 'OR')])
req.args.update(self.append_defaults())
view = ClassicSearchRedirectView()
search = view.translate(req)
self.assertEqual('q=' +
urllib.quote('title:') + '(' + urllib.quote('ADS Kurtz') + ')' +
'&sort=' + urllib.quote('date desc, bibcode desc') +
'&warning_message=' + 'TITLE_ANDED_WARNING' + '/', search) # single object

def test_text(self):
"""text search"""
Expand All @@ -145,10 +155,19 @@ def test_text(self):
req.args = MultiDict([('text', urllib.quote('M31'))])
req.args.update(self.append_defaults())
view = ClassicSearchRedirectView()
object_search = view.translate(req)
search = view.translate(req)
self.assertEqual('q=' +
urllib.quote('abs:') + '(' + urllib.quote('M31') + ')' +
'&sort=' + urllib.quote('date desc, bibcode desc') + '/', object_search) # single object
'&sort=' + urllib.quote('date desc, bibcode desc') + '/', search) # single object

req.args = MultiDict([('text', urllib.quote('foo bar')), ('txt_logic', 'OR')])
req.args.update(self.append_defaults())
view = ClassicSearchRedirectView()
search = view.translate(req)
self.assertEqual('q=' +
urllib.quote('abs:') + '(' + urllib.quote('foo bar') + ')' +
'&sort=' + urllib.quote('date desc, bibcode desc') +
'&warning_message=' + 'ABSTRACT_ANDED_WARNING' + '/', search) # single object

def test_pubdate(self):
"""test pubdate"""
Expand Down Expand Up @@ -727,6 +746,7 @@ def test_abstract(self):
req = Request('get', 'http://test.test?')
req.prepare()
req.mimetype = None

req.args = MultiDict([('data_and', 'YES'), ('abstract', 'YES')])
req.args.update(self.append_defaults())
view = ClassicSearchRedirectView()
Expand Down
12 changes: 10 additions & 2 deletions tugboat/views.py
Expand Up @@ -358,7 +358,7 @@ def translate_authors(self, args):
self.translation.warning_message.append(urllib.quote('AUTHOR_ANDED_WARNING'))

def translate_simple(self, args, classic_param, bbb_param):
"""process easy to translate fields like title
"""process easy to translate fields including title, abstract, and object
simply change name of parameter and use boolean connector
"""
Expand All @@ -370,16 +370,24 @@ def translate_simple(self, args, classic_param, bbb_param):
# one lone parameter should hold all authors from classic
classic_str = args.pop(classic_param, None)
if classic_str:
# note that only for object we allow multiple tokens and apply connector
# hence for title and abstract no connector is applied
if classic_param == 'object':
terms = self.classic_field_to_array(classic_str)
else:
terms = self.classic_field_to_string(classic_str)
# issue a warning for title and abstract if multiple words are specified and OR is selected
if len(''.join(terms).split(' ')) > 1 and logic == 'OR':
if classic_param == 'title':
self.translation.warning_message.append(urllib.quote('TITLE_ANDED_WARNING'))
elif classic_param == 'text':
self.translation.warning_message.append(urllib.quote('ABSTRACT_ANDED_WARNING'))
search += urllib.quote(bbb_param + ':') + '('
for term in terms:
search += urllib.quote(term + connector)
search = search[:-len(urllib.quote(connector))] # remove final connector
search += ')'
# fields in search are ANDed as of 5/9
# multiple fields in search are ANDed as of 5/9/2018
if len(self.translation.search) > 0:
self.translation.search.append('AND')
self.translation.search.append(search)
Expand Down

0 comments on commit 425ae85

Please sign in to comment.