diff --git a/pyproject.toml b/pyproject.toml index 2292ba7..bfc6066 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -87,6 +87,10 @@ dev = [ include-package-data = true package-dir = {"" = "src"} +[tool.setuptools.packages.find] +where = ["src"] +include = ["py_semantic_taxonomy*"] + [tool.setuptools.dynamic] version = {attr = "py_semantic_taxonomy.__version__"} diff --git a/src/py_semantic_taxonomy/adapters/routers/templates/search.html b/src/py_semantic_taxonomy/adapters/routers/templates/search.html index a27059d..c5b69e2 100644 --- a/src/py_semantic_taxonomy/adapters/routers/templates/search.html +++ b/src/py_semantic_taxonomy/adapters/routers/templates/search.html @@ -25,7 +25,7 @@

Search Results

diff --git a/tests/integration/test_web_ui.py b/tests/integration/test_web_ui.py new file mode 100644 index 0000000..6ecf40d --- /dev/null +++ b/tests/integration/test_web_ui.py @@ -0,0 +1,87 @@ +"""Integration tests for Web UI functionality.""" +import pytest +from urllib.parse import quote + + +@pytest.mark.typesense +async def test_web_search_preserves_language_in_results( + sqlite, typesense, anonymous_client, cn +): + """Test that search results include language parameter in concept links.""" + # Perform a search in German + response = await anonymous_client.get( + "/web/search/", params={"query": "Esel", "language": "de"} + ) + assert response.status_code == 200 + + # Check that the HTML contains links with language parameter + html_content = response.text + + # Search results should link to concepts with language parameter + # The link format should be: /web/concept/{iri}?language=de + concept_iri = cn.concept_2023_low["@id"] + expected_link_pattern = f"/web/concept/{quote(concept_iri)}?language=de" + + assert expected_link_pattern in html_content, ( + f"Expected to find link '{expected_link_pattern}' in search results, " + f"but it was not present. This means clicking on a search result " + f"will not preserve the language setting." + ) + + +@pytest.mark.typesense +async def test_web_search_multiple_languages(sqlite, typesense, anonymous_client, cn): + """Test that different languages produce correctly parameterized links.""" + languages = ["en", "de"] + + for lang in languages: + response = await anonymous_client.get( + "/web/search/", params={"query": "test", "language": lang} + ) + assert response.status_code == 200 + + # Verify the hidden language input has the correct value + html_content = response.text + assert f'