#!/usr/bin/env bash
# Phase 15 anchor smoke runner.
#
# Hits the live blouza tenant via http://127.0.0.1:8765, exercises the
# canonical happy paths from auth → RBAC → communications → finance →
# extracurricular → activity-log. Used in lieu of in-memory feature tests
# because the schema-per-tenant setup needs a real Postgres connection.
#
# Usage:
#   php artisan serve --port=8765 &
#   ./tests/smoke.sh <bearer-token> [tenant-slug=blouza]
#
# Exits non-zero on the first failure.

set -e

TOKEN="${1:?Bearer token required (mint via tinker)}"
TENANT="${2:-blouza}"
BASE="http://127.0.0.1:8765/api/v1"

H_AUTH="Authorization: Bearer $TOKEN"
H_TEN="X-Tenant-Id: $TENANT"
H_ACC="Accept: application/json"

assert_200() {
    local label="$1"; shift
    local code
    code=$(curl -s -o /tmp/smoke.body -w "%{http_code}" -H "$H_AUTH" -H "$H_TEN" -H "$H_ACC" "$@")
    if [ "$code" != "200" ] && [ "$code" != "201" ]; then
        echo "FAIL: $label → HTTP $code"
        cat /tmp/smoke.body
        exit 1
    fi
    echo "ok   $label"
}

echo "Phase 15 smoke — tenant=$TENANT"

assert_200 "GET /ping"                              "$BASE/ping"
assert_200 "GET /auth/me"                           "$BASE/auth/me"
assert_200 "GET /permissions/matrix"                "$BASE/permissions/matrix"
assert_200 "GET /roles"                             "$BASE/roles"
assert_200 "GET /announcements"                     "$BASE/announcements"
assert_200 "GET /messages/conversations"            "$BASE/messages/conversations"
assert_200 "GET /notifications"                     "$BASE/notifications"
assert_200 "GET /finance/stats"                     "$BASE/finance/stats"
assert_200 "GET /finance/fees"                      "$BASE/finance/fees"
assert_200 "GET /extracurricular/houses"            "$BASE/extracurricular/houses"
assert_200 "GET /extracurricular/clubs"             "$BASE/extracurricular/clubs"
assert_200 "GET /extracurricular/stats"             "$BASE/extracurricular/stats"
assert_200 "GET /archive/records"                   "$BASE/archive/records"
assert_200 "GET /academics/classes"                 "$BASE/academics/classes"
assert_200 "GET /logs/activity"                     "$BASE/logs/activity"
assert_200 "GET /logs/stats"                        "$BASE/logs/stats"
assert_200 "GET /students"                          "$BASE/students"
assert_200 "GET /klasses"                           "$BASE/klasses"
assert_200 "GET /logistics/stats"                   "$BASE/logistics/stats"

# Cross-cutting helpers added during system-wide audit (frontend-parity)
assert_200 "GET /search?q=demo"                     "$BASE/search?q=demo"
assert_200 "GET /dashboard/teacher"                 "$BASE/dashboard/teacher"
assert_200 "GET /dashboard/teacher-growth"          "$BASE/dashboard/teacher-growth"
assert_200 "GET /teacher/students"                  "$BASE/teacher/students"
assert_200 "GET /teacher/status-distribution"       "$BASE/teacher/status-distribution"
assert_200 "GET /teacher/stats"                     "$BASE/teacher/stats"
assert_200 "GET /onboarding/status"                 "$BASE/onboarding/status"
assert_200 "GET /academic/grading-strategies"       "$BASE/academic/grading-strategies"
assert_200 "GET /academic/lesson-plans"             "$BASE/academic/lesson-plans"

echo
echo "All anchor endpoints green."
