87 lines
2.8 KiB
Python
87 lines
2.8 KiB
Python
"""IT-Hilfe-Sofort.de — alle 19 Sitemap-Routen."""
|
|
|
|
import sys
|
|
from pathlib import Path
|
|
|
|
import pytest
|
|
|
|
sys.path.insert(0, str(Path(__file__).resolve().parent.parent))
|
|
project_root = Path(__file__).resolve().parent.parent
|
|
|
|
import app # noqa: E402
|
|
|
|
|
|
@pytest.fixture
|
|
def client():
|
|
"""Flask-Test-Client."""
|
|
app.app.config["TESTING"] = True
|
|
with app.app.test_client() as klient:
|
|
yield klient
|
|
|
|
|
|
SEITEN = [
|
|
("/", "Startseite"),
|
|
("/impressum", "Impressum"),
|
|
("/datenschutz", "Datenschutz"),
|
|
("/ueber-uns", "Ueber uns"),
|
|
("/kontakt", "Kontakt"),
|
|
("/faq", "FAQ"),
|
|
("/blog/telematik-vorschriften", "Telematik-Vorschriften"),
|
|
("/blog/dsgvo-it-sicherheit", "DSGVO & IT-Sicherheit"),
|
|
("/blog/fachkraeftemangel", "Fachkraeftemangel"),
|
|
("/blog/foerderung-finanzierung", "Foerderung & Finanzierung"),
|
|
("/blog/qualitaet-pruefung", "Qualitaet & Pruefung"),
|
|
("/blog/praxis-tipps", "Praxis-Tipps"),
|
|
("/leistungen/pflegedienste", "Pflegedienste"),
|
|
("/leistungen/pflegeheime", "Pflegeheime"),
|
|
("/leistungen/tagespflegen", "Tagespflegen"),
|
|
("/it-service/hardware", "Hardware"),
|
|
("/it-service/netzwerk", "Netzwerk"),
|
|
("/it-service/email-kommunikation", "E-Mail & Kommunikation"),
|
|
("/it-service/support-wartung", "Support & Wartung"),
|
|
]
|
|
|
|
|
|
@pytest.mark.parametrize("pfad,titel", SEITEN)
|
|
def test_seite_ist_erreichbar(pfad: str, titel: str, client) -> None:
|
|
"""Jede Sitemap-Seite muss mit 200 antworten."""
|
|
response = client.get(pfad)
|
|
assert response.status_code == 200, f"{pfad} ({titel}) gab {response.status_code}"
|
|
assert b"<!DOCTYPE html>" in response.data, f"{pfad} hat kein valid HTML"
|
|
|
|
|
|
def test_base_template_inhalt(client) -> None:
|
|
"""Das base_template muss Header, Footer und CSS enthalten."""
|
|
response = client.get("/")
|
|
assert b"site-header" in response.data
|
|
assert b"site-footer" in response.data
|
|
assert b"IT-Hilfe-Sofort.de" in response.data
|
|
|
|
|
|
def test_kontakt_iframe_present(client) -> None:
|
|
"""Das Kontakt-Formular muss das CRM iframe enthalten."""
|
|
response = client.get("/kontakt")
|
|
assert b"crm.companyhub.io" in response.data
|
|
|
|
|
|
def test_faq_accordion_present(client) -> None:
|
|
"""FAQ muss Aufklappbare Elemente enthalten."""
|
|
response = client.get("/faq")
|
|
assert b"faq-item" in response.data
|
|
assert b"summary" in response.data
|
|
|
|
|
|
def test_404_fuer_unbekannte_seiten(client) -> None:
|
|
"""Unbekannte URLs muessen 404 liefern."""
|
|
response = client.get("/nicht-existiert")
|
|
assert response.status_code == 404
|
|
|
|
|
|
def test_artikel_dateien_existieren() -> None:
|
|
"""Alle 24 Artikel-Htmls muessen im 'artikel'-Ordner liegen."""
|
|
artikel_dir = project_root
|
|
zaehler = 0
|
|
for f in artikel_dir.glob("artikel-*.html"):
|
|
zaehler += 1
|
|
assert zaehler == 24, f"Erwartet 24 Artikel, gefunden {zaehler}"
|