#!/bin/bash
# self-test.sh
# Full system validation + report generator for the Diagnostics + Learning Platform

REPORT="SELF_TEST_REPORT.md"
PASS="✔ PASS"
FAIL="✖ FAIL"

echo "📘 Running full platform self-test..."
echo "" > "$REPORT"
echo "# 🧪 Full Platform Self-Test Report" >> "$REPORT"
echo "_Generated on $(date)_" >> "$REPORT"
echo "" >> "$REPORT"

section () {
    echo "" | tee -a "$REPORT"
    echo "## $1" | tee -a "$REPORT"
    echo "" >> "$REPORT"
}

check () {
    if eval "$1"; then
        echo "$PASS — $2" | tee -a "$REPORT"
    else
        echo "$FAIL — $2" | tee -a "$REPORT"
    fi
}

###############################################
# 1. DIRECTORY CHECKS
###############################################
section "📁 Directory Structure"

check "[ -d docs ]" "docs directory exists"
check "[ -d js ]" "js directory exists"
check "[ -d tracks ]" "tracks directory exists"

###############################################
# 2. CORE DOCS CHECK
###############################################
section "📘 Documentation Files"

DOCS=(
    README.md DEVELOPER_GUIDE.md ARCHITECTURE_GUIDE.md CODING_STANDARDS.md
    MYSQL_GUIDE.md ROADMAP.md TASKS.md LEARN_DEBUG.md LEARN_PERF.md
    LEARN_SQL.md LEARN_UI.md LEARN_ERRORS.md AI_GUIDE.md TROUBLESHOOTING.md
    SECURITY_GUIDE.md RELEASE_NOTES.md
)

for file in "${DOCS[@]}"; do
    check "[ -f docs/$file ]" "docs/$file"
done

###############################################
# 3. JS MODULE CHECK
###############################################
section "🧩 JS Modules"

JS=(
    markdown-viewer.js progress.js quiz-engine.js theme.js
)

for file in "${JS[@]}"; do
    check "[ -f js/$file ]" "js/$file"
done

###############################################
# 4. CONFIG CHECK
###############################################
section "⚙️ learning-config.json"

check "[ -f learning-config.json ]" "learning-config.json exists"

jq empty learning-config.json 2>/dev/null
check "[ $? -eq 0 ]" "learning-config.json is valid JSON"

###############################################
# 5. PHP SYNTAX CHECK
###############################################
section "🐘 PHP Syntax"

check "[ -f learning-app.php ]" "learning-app.php exists"

php -l learning-app.php >/dev/null 2>&1
check "[ $? -eq 0 ]" "learning-app.php syntax OK"

###############################################
# 6. TRACK GENERATOR TEST
###############################################
section "🛠 Track Generator"

TEST_TRACK="SelfTestTrack"
./generate-track.sh "$TEST_TRACK" >/dev/null 2>&1

check "[ -d tracks/$TEST_TRACK ]" "Track directory created"
check "[ -f docs/$TEST_TRACK/INTRO.md ]" "Track intro doc created"

###############################################
# 7. STEP GENERATOR TEST
###############################################
section "🛠 Step Generator"

./generate-step.sh "$TEST_TRACK" "SelfTest Step" "STEP1.md" >/dev/null 2>&1

check "[ -f docs/$TEST_TRACK/STEP1.md ]" "Step doc created"
check "grep -q 'SelfTest Step' tracks/$TEST_TRACK/config.json" "Step added to track config"

###############################################
# 8. MODULE GENERATOR TEST
###############################################
section "🛠 Module Generator"

./generate-module.sh "SelfTestModule" "Module test description." >/dev/null 2>&1

check "[ -f docs/SelfTestModule.md ]" "Module doc created"
check "[ -f js/SelfTestModule.js ]" "Module JS created"
check "grep -q 'SelfTestModule' learning-config.json" "Module added to learning-config.json"

###############################################
# 9. FINAL SUMMARY
###############################################
section "🏁 Summary"

echo "Self-test complete. Review SELF_TEST_REPORT.md for full results." | tee -a "$REPORT"

echo ""
echo "🎉 Self-test finished. See SELF_TEST_REPORT.md for full report."

