"""Operator docs/guide links are part of the deliverable, not runtime acceptance."""
import json
from pathlib import Path
import re
import subprocess
import sys
import unittest
from deployment_kit.bundle import PUBLIC_DOCS, allowed_source
from deployment_kit.cli import GUIDES
ROOT=Path(__file__).resolve().parents[2]

class DocumentationTests(unittest.TestCase):
    def test_public_doc_set(self):
        for name in PUBLIC_DOCS:
            self.assertTrue((ROOT/'docs/deployment'/name).is_file(),name)
            self.assertTrue(allowed_source('docs/deployment/'+name),name)
    def test_guide_commands(self):
        for topic in GUIDES:
            result=subprocess.run([sys.executable,'-B',str(ROOT/'deployctl'),'guide',topic],capture_output=True,text=True)
            self.assertEqual(result.returncode,0,topic);self.assertIn('# ',result.stdout)
    def test_relative_doc_links(self):
        for p in (ROOT/'docs/deployment').glob('*.md'):
            for dest in re.findall(r'\]\(([^)]+)\)',p.read_text()):
                if '://' not in dest and not dest.startswith('#'):
                    self.assertTrue((p.parent/dest.split('#')[0]).exists(),(p.name,dest))
    def test_examples_json_and_no_private_files(self):
        for p in (ROOT/'deploy/configs').glob('*.example'):
            self.assertIsInstance(json.loads(p.read_text()),dict)
        for path in ('docs/deployment-review/HANDOFF.ko.md','docs/deployment-review/VERIFICATION.ko.md'):
            self.assertFalse(allowed_source(path))
