Skip to content

Commit

Permalink
Merge pull request #3410 from timothyjrogers/trim-search-whitespace
Browse files Browse the repository at this point in the history
Trim search whitespace
  • Loading branch information
mouse-reeve authored Aug 12, 2024
2 parents 95c2798 + f68e33f commit cf753af
Show file tree
Hide file tree
Showing 2 changed files with 47 additions and 5 deletions.
43 changes: 43 additions & 0 deletions bookwyrm/tests/views/test_search.py
Original file line number Diff line number Diff line change
Expand Up @@ -103,6 +103,20 @@ def test_search_books(self):
connector_results = response.context_data["remote_results"]
self.assertEqual(connector_results[0]["results"][0].title, "Mock Book")

def test_search_books_extra_whitespace(self):
"""just the search page"""
view = views.Search.as_view()
request = self.factory.get("", {"q": " Test Book ", "remote": False})
request.user = self.local_user
with patch("bookwyrm.views.search.is_api_request") as is_api:
is_api.return_value = False
response = view(request)
self.assertIsInstance(response, TemplateResponse)
validate_html(response.render())

local_results = response.context_data["results"]
self.assertEqual(local_results[0].title, "Test Book")

def test_search_book_anonymous(self):
"""Don't search remote for logged out user"""
view = views.Search.as_view()
Expand Down Expand Up @@ -150,6 +164,17 @@ def test_search_users(self):
validate_html(response.render())
self.assertEqual(response.context_data["results"][0], self.local_user)

def test_search_users_extra_whitespace(self):
"""searches remote connectors"""
view = views.Search.as_view()
request = self.factory.get("", {"q": " mouse ", "type": "user"})
request.user = self.local_user
response = view(request)

self.assertIsInstance(response, TemplateResponse)
validate_html(response.render())
self.assertEqual(response.context_data["results"][0], self.local_user)

def test_search_users_logged_out(self):
"""searches remote connectors"""
view = views.Search.as_view()
Expand Down Expand Up @@ -181,3 +206,21 @@ def test_search_lists(self):
self.assertIsInstance(response, TemplateResponse)
validate_html(response.render())
self.assertEqual(response.context_data["results"][0], booklist)

def test_search_lists_extra_whitespace(self):
"""searches remote connectors"""
with (
patch("bookwyrm.models.activitypub_mixin.broadcast_task.apply_async"),
patch("bookwyrm.lists_stream.remove_list_task.delay"),
):
booklist = models.List.objects.create(
user=self.local_user, name="test list"
)
view = views.Search.as_view()
request = self.factory.get("", {"q": " test ", "type": "list"})
request.user = self.local_user
response = view(request)

self.assertIsInstance(response, TemplateResponse)
validate_html(response.render())
self.assertEqual(response.context_data["results"][0], booklist)
9 changes: 4 additions & 5 deletions bookwyrm/views/search.py
Original file line number Diff line number Diff line change
Expand Up @@ -53,7 +53,7 @@ def get(self, request):

def api_book_search(request):
"""Return books via API response"""
query = request.GET.get("q")
query = request.GET.get("q").strip()
query = isbn_check_and_format(query)
min_confidence = request.GET.get("min_confidence", 0)
# only return local book results via json so we don't cascade
Expand All @@ -65,7 +65,7 @@ def api_book_search(request):

def book_search(request):
"""the real business is elsewhere"""
query = request.GET.get("q")
query = request.GET.get("q").strip()
# check if query is isbn
query = isbn_check_and_format(query)
min_confidence = request.GET.get("min_confidence", 0)
Expand Down Expand Up @@ -123,8 +123,7 @@ def author_search(request):
def user_search(request):
"""user search: search for a user"""
viewer = request.user
query = request.GET.get("q")
query = query.strip()
query = request.GET.get("q").strip()
data = {"type": "user", "query": query}

# use webfinger for mastodon style account@domain.com username to load the user if
Expand Down Expand Up @@ -162,7 +161,7 @@ def user_search(request):

def list_search(request):
"""any relevent lists?"""
query = request.GET.get("q")
query = request.GET.get("q").strip()
data = {"query": query, "type": "list"}
results = (
models.List.privacy_filter(
Expand Down

0 comments on commit cf753af

Please sign in to comment.