Translate the whole site to English: English routes with 301 redirects from the Dutch paths, English UI, docs, seeds and captions, one-time live content migration
This commit is contained in:
@@ -0,0 +1,68 @@
|
||||
# retoor <retoor@molodetz.nl>
|
||||
import pytest
|
||||
|
||||
from molodetz.routers.legacy import LEGACY_PATHS
|
||||
|
||||
REDIRECTS = [
|
||||
("/rol", "/roll"),
|
||||
("/standaard", "/standard"),
|
||||
("/mensen", "/people"),
|
||||
("/mensen/retoor", "/people/retoor"),
|
||||
("/binnen", "/join"),
|
||||
("/voorwaarden", "/terms"),
|
||||
("/docs/welkom", "/docs/welcome"),
|
||||
("/docs/schrijven", "/docs/writing"),
|
||||
("/docs/binnen", "/docs/join"),
|
||||
("/docs/juridisch", "/docs/legal"),
|
||||
("/docs/architectuur", "/docs/architecture"),
|
||||
("/docs/api/inhoud", "/docs/api/content"),
|
||||
("/docs/api/binnen", "/docs/api/join"),
|
||||
]
|
||||
|
||||
|
||||
@pytest.mark.parametrize("old,new", REDIRECTS)
|
||||
def test_old_dutch_paths_redirect_permanently(anon, old, new):
|
||||
response = anon.get(old)
|
||||
assert response.status_code == 301, old
|
||||
assert response.headers["location"] == new
|
||||
assert anon.get(new).status_code == 200, new
|
||||
|
||||
|
||||
def test_redirect_keeps_query_string(anon):
|
||||
response = anon.get("/rol?before=2026-01-01")
|
||||
assert response.status_code == 301
|
||||
assert response.headers["location"] == "/roll?before=2026-01-01"
|
||||
|
||||
|
||||
def test_old_join_post_keeps_method(anon):
|
||||
response = anon.post("/binnen", data={"name": "x"})
|
||||
assert response.status_code == 308
|
||||
assert response.headers["location"] == "/join"
|
||||
|
||||
|
||||
def test_legacy_paths_are_hidden_from_schema():
|
||||
from molodetz.main import app
|
||||
|
||||
paths = app.openapi()["paths"]
|
||||
assert not any(old in paths for old in LEGACY_PATHS)
|
||||
assert "/mensen/{username}" not in paths
|
||||
|
||||
|
||||
def test_old_post_slug_redirects_to_english_slug(anon, admin):
|
||||
from molodetz.content import translate_seeded_posts
|
||||
from molodetz.database import db, get_user_by_username, insert_post, update_post_row
|
||||
|
||||
author = get_user_by_username("retoor")
|
||||
row = insert_post(author["uid"], "Af is een eigenschap.", "Een project dat open blijft, is een mening.", "rol", status="published", is_placeholder=True)
|
||||
try:
|
||||
assert translate_seeded_posts() >= 1
|
||||
migrated = db["posts"].find_one(uid=row["uid"])
|
||||
assert migrated["title"] == "Finished is a feature."
|
||||
assert migrated["topic"] == "roll"
|
||||
assert migrated["slug"].startswith("finished-is-a-feature-")
|
||||
assert "Carried over from the old Molodetz page" in migrated["body"]
|
||||
response = anon.get(f"/posts/{row['slug']}")
|
||||
assert response.status_code == 301
|
||||
assert response.headers["location"] == f"/posts/{migrated['slug']}"
|
||||
finally:
|
||||
update_post_row(row["uid"], deleted_at="2026-01-01T00:00:00+00:00", deleted_by="test")
|
||||
Reference in New Issue
Block a user