#!/bin/bash
# Smoke-Test fuer pre-compact.sh garantierte Summary (KAR-686, Pattern #2)
# Run: bash /root/aria/scripts/tests/test_pre_compact.sh
set -u
HOOK="/root/.claude/hooks/pre-compact.sh"
TMP=$(mktemp -d)
PASS=0; FAIL=0
ok(){ if eval "$2"; then echo "  [PASS] $1"; PASS=$((PASS+1)); else echo "  [FAIL] $1"; FAIL=$((FAIL+1)); fi; }

# Fixtures
ACTIVE="$TMP/active.md"
HANDOFF="$TMP/handoff.md"
BACKUP="$TMP/active_backup.md"
LOG="$TMP/hook.log"
printf '# Active Task\nMARKER_WORKING_MEMORY_123\n- offen: das eine Ding\n' > "$ACTIVE"
printf '# HANDOFF\nbestehender Inhalt\n' > "$HANDOFF"

ARIA_ACTIVE_TASK="$ACTIVE" ARIA_HANDOFF="$HANDOFF" ARIA_PRECOMPACT_BACKUP="$BACKUP" \
ARIA_BRAIN_DIR="$TMP" ARIA_HOOK_LOG="$LOG" \
  bash "$HOOK" >/dev/null 2>&1
RC=$?

ok "Hook exit 0" "[ $RC -eq 0 ]"
ok "Backup angelegt" "[ -f '$BACKUP' ]"
ok "HANDOFF hat Preserved-Working-Memory-Block" "grep -q 'Preserved Working-Memory' '$HANDOFF'"
ok "Working-Memory-Inhalt eingebettet (kein TBD-Verlust)" "grep -q 'MARKER_WORKING_MEMORY_123' '$HANDOFF'"
ok "bestehender HANDOFF-Inhalt erhalten" "grep -q 'bestehender Inhalt' '$HANDOFF'"
ok "kein-git-Fall sauber behandelt" "grep -q 'kein git' '$HANDOFF'"

# Fall: keine ACTIVE_TASK -> trotzdem garantierter Eintrag, kein Crash
rm -f "$ACTIVE"
ARIA_ACTIVE_TASK="$ACTIVE" ARIA_HANDOFF="$HANDOFF" ARIA_PRECOMPACT_BACKUP="$BACKUP" \
ARIA_BRAIN_DIR="$TMP" ARIA_HOOK_LOG="$LOG" \
  bash "$HOOK" >/dev/null 2>&1
ok "ohne ACTIVE_TASK kein Crash + Hinweis" "grep -q 'keine ACTIVE_TASK.md gefunden' '$HANDOFF'"

rm -rf "$TMP"
echo "---"
echo "PASS=$PASS FAIL=$FAIL"
[ $FAIL -eq 0 ] && exit 0 || exit 1
