diff --git a/pagure/lib/query.py b/pagure/lib/query.py index eec9a55..59b6c20 100644 --- a/pagure/lib/query.py +++ b/pagure/lib/query.py @@ -3013,7 +3013,9 @@ def search_issues( ) if search_content is not None: - query = query.filter( + query = query.outerjoin( + model.IssueComment + ).filter( sqlalchemy.or_( model.Issue.content.ilike("%%%s%%" % search_content), sqlalchemy.and_( diff --git a/tests/test_pagure_flask_ui_issues.py b/tests/test_pagure_flask_ui_issues.py index 8a60fcf..52891c0 100644 --- a/tests/test_pagure_flask_ui_issues.py +++ b/tests/test_pagure_flask_ui_issues.py @@ -695,6 +695,15 @@ class PagureFlaskIssuestests(tests.Modeltests): self.session.commit() self.assertEqual(msg.title, 'Tést íssüé with milestone') + # Add a comment to that ticket + pagure.lib.query.add_issue_comment( + session=self.session, + issue=msg, + comment='How about nóã!', + user='foo', + ) + self.session.commit() + msg = pagure.lib.query.new_issue( session=self.session, repo=repo, @@ -776,6 +785,26 @@ class PagureFlaskIssuestests(tests.Modeltests): self.assertIn('Issues - test - Pagure', output_text) self.assertIn('0 Open & Closed Issues', output_text) + # Content search - description + output = self.app.get( + '/test/issues?status=all&search_pattern=content:work') + self.assertEqual(output.status_code, 200) + output_text = output.get_data(as_text=True) + self.assertIn( + 'Issues - test - Pagure', + output_text) + self.assertIn('1 Open & Closed Issues', output_text) + + # Content search - comment + output = self.app.get( + '/test/issues?status=all&search_pattern=content:nóã') + self.assertEqual(output.status_code, 200) + output_text = output.get_data(as_text=True) + self.assertIn( + 'Issues - test - Pagure', + output_text) + self.assertIn('1 Open & Closed Issues', output_text) + # Custom key searching output = self.app.get( '/test/issues?status=all&search_pattern=test1:firstissue')