import json
import tempfile
from pathlib import Path

from src.domain.codegen.app_sdk import ensure_contact_capture_manifest
from src.domain.codegen.leftover_contact import (
    contact_capture_config_from_repo,
    scan_leftover_notify_emails,
)


def test_scan_picks_notify_hint_and_contact_filename_emails():
    with tempfile.TemporaryDirectory() as raw:
        root = Path(raw)
        (root / "js").mkdir()
        (root / "js" / "contact.js").write_text(
            "const to = 'leads@ucitycoinwash.com';\n",
            encoding="utf-8",
        )
        (root / "js" / "hours.js").write_text(
            "Call us at desk@ucitycoinwash.com during business hours.\n",
            encoding="utf-8",
        )
        found = scan_leftover_notify_emails(raw)
    assert "leads@ucitycoinwash.com" in found
    assert "desk@ucitycoinwash.com" not in found


def test_scan_skips_platform_contact_adapter():
    with tempfile.TemporaryDirectory() as raw:
        root = Path(raw)
        path = root / "functions" / "_lib" / "p2hs-contact.mjs"
        path.parent.mkdir(parents=True)
        path.write_text(
            "// p2hs-contact\nconst notify = 'owner@ucitycoinwash.com';\n",
            encoding="utf-8",
        )
        assert scan_leftover_notify_emails(raw) == ""


def test_contact_capture_config_from_repo_reads_notify():
    with tempfile.TemporaryDirectory() as raw:
        ensure_contact_capture_manifest(raw, notify_to_email="ops@site.test")
        cfg = contact_capture_config_from_repo(raw)
        packs = json.loads((Path(raw) / "p2hs/feature-packs.json").read_text(encoding="utf-8"))
    assert cfg["notify_to_email"] == "ops@site.test"
    assert packs["install"][0]["pack_slug"] == "contact-capture"
