#!/usr/bin/env bash
# Run B2B integration tests against real Supabase using credentials from
# `apps/b2b/test_accounts.json`. Run `scripts/seed-b2b-test-accounts.sh`
# first to provision accounts.
#
# Usage:
#   scripts/run-b2b-e2e.sh                      # all integration_test/*
#   scripts/run-b2b-e2e.sh integration_test/auth_role_gate_e2e_test.dart
#   DEVICE_ID=R3CR312HVVF scripts/run-b2b-e2e.sh
set -euo pipefail

ROOT="$(cd "$(dirname "$0")/.." && pwd)"
ACCT="$ROOT/apps/b2b/test_accounts.json"

[[ -f "$ACCT" ]] || {
  echo "missing $ACCT — run scripts/seed-b2b-test-accounts.sh first" >&2
  exit 1
}

read_json() { python3 -c "import json,sys; print(json.load(open('$ACCT'))$1)"; }

ANON="${SUPABASE_ANON_KEY:-$(supabase projects api-keys --project-ref xronafnxeseggprcbshx 2>/dev/null \
  | grep -E '^[[:space:]]+anon[[:space:]]' | sed 's/.*| //;s/ *$//')}"

[[ -n "$ANON" ]] || { echo "SUPABASE_ANON_KEY missing (set env or login to supabase CLI)" >&2; exit 1; }

OWNER=$(read_json "['accounts']['owner']['email']")
TRAINER=$(read_json "['accounts']['trainer']['email']")
MEMBER=$(read_json "['accounts']['member']['email']")
ORPHAN=$(read_json "['accounts'].get('orphan',{}).get('email','')")
PASSWORD=$(read_json "['password']")

cd "$ROOT/apps/b2b"
DEVICE_ARG=()
[[ -n "${DEVICE_ID:-}" ]] && DEVICE_ARG=(-d "$DEVICE_ID")

TARGET="${1:-integration_test}"
exec flutter test "${DEVICE_ARG[@]}" "$TARGET" \
  --dart-define=SUPABASE_ANON_KEY="$ANON" \
  --dart-define=TEST_OWNER_EMAIL="$OWNER" \
  --dart-define=TEST_TRAINER_EMAIL="$TRAINER" \
  --dart-define=TEST_MEMBER_EMAIL="$MEMBER" \
  --dart-define=TEST_ORPHAN_EMAIL="$ORPHAN" \
  --dart-define=TEST_PASSWORD="$PASSWORD"
