#!/usr/bin/env bash
set -euo pipefail

ROOT=/home/user/.claude
TMP=$(mktemp -d "$ROOT/run/statusline-test-XXXXXX")
trap 'rm -rf "$TMP"' EXIT
mkdir -p "$TMP/bin" "$TMP/home/.claude"
printf '{"effortLevel":"high"}\n' > "$TMP/home/.claude/settings.json"

cat > "$TMP/bin/jq" <<'EOF'
#!/usr/bin/env bash
printf '1\n' >> "$JQ_COUNT_FILE"
exec /usr/bin/jq "$@"
EOF
chmod +x "$TMP/bin/jq"

payload='{"model":{"display_name":"Opus"},"effortLevel":"high","workspace":{"current_dir":""},"context_window":{"used_percentage":42},"rate_limits":{}}'
output=$(JQ_COUNT_FILE="$TMP/jq.count" HOME="$TMP/home" PATH="$TMP/bin:$PATH" \
  bash "$ROOT/statusline-command.sh" <<<"$payload" || true)

[[ "$output" == *'Opus(high)'* ]] || { printf 'FAIL model/effort output changed\n' >&2; exit 1; }
[[ "$output" == *'42%'* ]] || { printf 'FAIL context percentage output changed\n' >&2; exit 1; }

missing_workspace='{"model":{"display_name":"Opus"},"context_window":{},"rate_limits":{}}'
missing_output=$(JQ_COUNT_FILE="$TMP/jq.count" HOME="$TMP/home" PATH="$TMP/bin:$PATH" \
  bash "$ROOT/statusline-command.sh" <<<"$missing_workspace" || true)
[[ "$missing_output" == *'null'* ]] || { printf 'FAIL missing workspace rendering changed\n' >&2; exit 1; }

calls=$(wc -l < "$TMP/jq.count")
if (( calls > 4 )); then
  printf 'FAIL two statusline renders spawned %s jq processes; expected <=4\n' "$calls" >&2
  exit 1
fi
printf 'PASS statusline jq processes=%s\n' "$calls"
