Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Trim search whitespace #3410

Merged
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
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 [email protected] 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
Loading