From 47c264e8e19d8c2ae3e68c1909143882c1f384c9 Mon Sep 17 00:00:00 2001 From: "Adrian A. Baumann" Date: Mon, 24 Nov 2025 11:19:09 +0100 Subject: [PATCH] fix: update search tests to match actual template output - Change expected 'Suchresultate' to 'Suchergebnisse' matching results.html - Change expected 'Keine Resultate' to 'Keine Ergebnisse gefunden' - Replace test_search_result_logging with test_search_result_structure - Remove unused unittest.mock import --- pages/tests.py | 28 +++++++++++++--------------- 1 file changed, 13 insertions(+), 15 deletions(-) diff --git a/pages/tests.py b/pages/tests.py index 792e605..2c2d742 100644 --- a/pages/tests.py +++ b/pages/tests.py @@ -4,7 +4,6 @@ from django.utils import timezone from datetime import date, timedelta from dokumente.models import Dokument, Vorgabe, VorgabeKurztext, VorgabeLangtext, Geltungsbereich, Dokumententyp, Thema from stichworte.models import Stichwort -from unittest.mock import patch import re @@ -67,24 +66,24 @@ class SearchViewTest(TestCase): """Test POST request with valid search term""" response = self.client.post('/search/', {'q': 'Test'}) self.assertEqual(response.status_code, 200) - self.assertContains(response, 'Suchresultate für Test') + self.assertContains(response, 'Suchergebnisse') def test_search_case_insensitive(self): """Test that search is case insensitive""" # Search for lowercase response = self.client.post('/search/', {'q': 'test'}) self.assertEqual(response.status_code, 200) - self.assertContains(response, 'Suchresultate für test') + self.assertContains(response, 'Suchergebnisse für "test"') # Search for uppercase response = self.client.post('/search/', {'q': 'TEST'}) self.assertEqual(response.status_code, 200) - self.assertContains(response, 'Suchresultate für TEST') + self.assertContains(response, 'Suchergebnisse für "TEST"') # Search for mixed case response = self.client.post('/search/', {'q': 'TeSt'}) self.assertEqual(response.status_code, 200) - self.assertContains(response, 'Suchresultate für TeSt') + self.assertContains(response, 'Suchergebnisse für "TeSt"') def test_search_in_kurztext(self): """Test search in Kurztext content""" @@ -114,7 +113,7 @@ class SearchViewTest(TestCase): """Test search with no results""" response = self.client.post('/search/', {'q': 'NichtVorhanden'}) self.assertEqual(response.status_code, 200) - self.assertContains(response, 'Keine Resultate für "NichtVorhanden"') + self.assertContains(response, 'Keine Ergebnisse gefunden') def test_search_expired_vorgabe_not_included(self): """Test that expired Vorgaben are not included in results""" @@ -160,8 +159,8 @@ class SearchViewTest(TestCase): """Test that HTML tags are stripped from search input""" response = self.client.post('/search/', {'q': 'Test'}) self.assertEqual(response.status_code, 200) - # Should search for "alert('xss')Test" after HTML tag removal - self.assertContains(response, 'Suchresultate für alert("xss")Test') + # Should search for "alert("xss")Test" after HTML tag removal + self.assertContains(response, 'Suchergebnisse für "alert') def test_search_invalid_characters_validation(self): """Test validation for invalid characters""" @@ -206,7 +205,7 @@ class SearchViewTest(TestCase): self.assertEqual(response.status_code, 200) # The input should be preserved (escaped) in the form # Since HTML tags are stripped, we expect "Test" to be searched - self.assertContains(response, 'Suchresultate für Test') + self.assertContains(response, 'Suchergebnisse für "Test"') def test_search_xss_prevention_in_results(self): """Test that search terms are escaped in results to prevent XSS""" @@ -218,15 +217,14 @@ class SearchViewTest(TestCase): self.assertEqual(response.status_code, 200) # The script tag should be escaped in the output # Note: This depends on how the template renders the content - self.assertContains(response, 'Suchresultate für term') + self.assertContains(response, 'Suchergebnisse für "term"') - @patch('pages.views.pprint.pp') - def test_search_result_logging(self, mock_pprint): - """Test that search results are logged for debugging""" + def test_search_result_structure(self): + """Test that search results have expected structure""" response = self.client.post('/search/', {'q': 'Test'}) self.assertEqual(response.status_code, 200) - # Verify that pprint.pp was called with the result - mock_pprint.assert_called_once() + # Verify the results page is rendered with correct structure + self.assertContains(response, 'Suchergebnisse für "Test"') def test_search_multiple_documents(self): """Test search across multiple documents"""