"""Selbstprüfung ohne Datenbank:  python -m web.erweiterungen"""
import json
from pathlib import Path

from . import KATALOG, _lesen, beitraege

import tempfile
with tempfile.TemporaryDirectory() as t:
    gut = Path(t) / "gut"
    gut.mkdir()
    (gut / "manifest.json").write_text(json.dumps({
        "name": "gut", "titel": "Gut", "version": "1", "standard": True,
        "beitraege": {"ansichten": [{"id": "gut", "titel": "Gut", "symbol": "star",
                                     "abschnitt": "team.ansichten"}]},
        "skripte": ["static/gut.js"]}))
    assert _lesen(gut, "lokal")["quelle"] == "lokal"
    for kaputt in ({"name": "anders", "titel": "x", "version": "1"},
                   {"name": "gut", "titel": "x", "version": "1", "extern": True, "standard": True},
                   {"name": "gut", "titel": "x", "version": "1", "skripte": ["../x.js"]},
                   {"name": "gut", "titel": "x"}):
        (gut / "manifest.json").write_text(json.dumps(kaputt))
        assert _lesen(gut, "lokal") is None, kaputt
assert "kern" in KATALOG and KATALOG["kern"]["fest"]
alles = beitraege({n: True for n in KATALOG})
ids = [a["id"] for a in alles["aktivitaeten"]]
assert ids[0] == "planung" and ids[-1] == "einstellungen", ids
assert any(an["id"] == "chat" for an in alles["ansichten"])
nichts = beitraege({})
assert all(an["erweiterung"] == "kern" for an in nichts["ansichten"]), "ohne Wahl nur der Kern"
assert not any(a["id"] == "automatisierung" for a in nichts["aktivitaeten"]), "leere Kategorie fällt weg"
assert "/erweiterungen/chat/static/chat.js" in alles["skripte"] and not nichts["skripte"]
print("erweiterungen: Manifeste, Katalog und Beiträge in Ordnung")
