#!/bin/bash

# Script pour exécuter TOUS les tests avec détails complets

echo "========================================"
echo "Tests Booking Platform - Mode Détaillé"
echo "========================================"
echo ""

# Couleurs
GREEN='\033[0;32m'
RED='\033[0;31m'
BLUE='\033[0;34m'
YELLOW='\033[0;33m'
CYAN='\033[0;36m'
NC='\033[0m' # No Color

FAILED=0
PASSED=0
TOTAL_TESTS=0
TOTAL_ASSERTIONS=0

echo -e "${YELLOW}Phase 1: Tests unitaires standards${NC}"
echo "========================================="
echo ""

echo -e "${CYAN}[1/13] AvailabilityServiceTest${NC}"
php vendor/bin/phpunit tests/AvailabilityServiceTest.php --colors=always
[ $? -eq 0 ] && PASSED=$((PASSED + 1)) || FAILED=$((FAILED + 1))
echo ""

echo -e "${CYAN}[2/13] BookingAmountsServiceTest${NC}"
php vendor/bin/phpunit tests/BookingAmountsServiceTest.php --colors=always
[ $? -eq 0 ] && PASSED=$((PASSED + 1)) || FAILED=$((FAILED + 1))
echo ""

echo -e "${CYAN}[3/13] RateServiceTest${NC}"
php vendor/bin/phpunit tests/RateServiceTest.php --colors=always
[ $? -eq 0 ] && PASSED=$((PASSED + 1)) || FAILED=$((FAILED + 1))
echo ""

echo -e "${CYAN}[4/13] StripeServiceTest${NC}"
php vendor/bin/phpunit tests/StripeServiceTest.php --colors=always
[ $? -eq 0 ] && PASSED=$((PASSED + 1)) || FAILED=$((FAILED + 1))
echo ""

echo -e "${CYAN}[5/13] HelpersTest${NC}"
php vendor/bin/phpunit tests/HelpersTest.php --colors=always
[ $? -eq 0 ] && PASSED=$((PASSED + 1)) || FAILED=$((FAILED + 1))
echo ""

echo -e "${CYAN}[6/13] MailServiceTest${NC}"
php vendor/bin/phpunit tests/MailServiceTest.php --colors=always
[ $? -eq 0 ] && PASSED=$((PASSED + 1)) || FAILED=$((FAILED + 1))
echo ""

echo ""
echo -e "${YELLOW}Phase 2: Tests API${NC}"
echo "========================================="
echo ""

echo -e "${CYAN}[7/13] AvailabilityApiTest${NC}"
php vendor/bin/phpunit tests/Api/AvailabilityApiTest.php --colors=always
[ $? -eq 0 ] && PASSED=$((PASSED + 1)) || FAILED=$((FAILED + 1))
echo ""

echo -e "${CYAN}[8/13] BookingApiTest${NC}"
php vendor/bin/phpunit tests/Api/BookingApiTest.php --colors=always
[ $? -eq 0 ] && PASSED=$((PASSED + 1)) || FAILED=$((FAILED + 1))
echo ""

echo -e "${CYAN}[9/13] QuoteApiTest${NC}"
php vendor/bin/phpunit tests/Api/QuoteApiTest.php --colors=always
[ $? -eq 0 ] && PASSED=$((PASSED + 1)) || FAILED=$((FAILED + 1))
echo ""

echo -e "${CYAN}[10/13] RatesApiTest${NC}"
php vendor/bin/phpunit tests/Api/RatesApiTest.php --colors=always
[ $? -eq 0 ] && PASSED=$((PASSED + 1)) || FAILED=$((FAILED + 1))
echo ""

echo -e "${CYAN}[11/13] RateUpsertBulkApiTest${NC}"
php vendor/bin/phpunit tests/Api/RateUpsertBulkApiTest.php --colors=always
[ $? -eq 0 ] && PASSED=$((PASSED + 1)) || FAILED=$((FAILED + 1))
echo ""

echo -e "${CYAN}[12/13] UnitApiTest${NC}"
php vendor/bin/phpunit tests/Api/UnitApiTest.php --colors=always
[ $? -eq 0 ] && PASSED=$((PASSED + 1)) || FAILED=$((FAILED + 1))
echo ""

echo ""
echo -e "${YELLOW}Phase 3: Tests avec base de données${NC}"
echo "========================================="
echo ""

echo -e "${CYAN}[13/13] MailNotificationHelperTest (DB)${NC}"
php vendor/bin/phpunit --configuration phpunit-db.xml --colors=always
[ $? -eq 0 ] && PASSED=$((PASSED + 1)) || FAILED=$((FAILED + 1))
echo ""

echo ""
echo "========================================"
echo "Résumé Final"
echo "========================================"
echo "Total: 13 suites de tests"
echo -e "${GREEN}Réussis: $PASSED${NC}"
if [ $FAILED -gt 0 ]; then
    echo -e "${RED}Échecs: $FAILED${NC}"
fi
echo ""

if [ $FAILED -eq 0 ]; then
    echo -e "${GREEN}╔════════════════════════════════════╗${NC}"
    echo -e "${GREEN}║  ✓ Tous les tests sont passés !   ║${NC}"
    echo -e "${GREEN}╚════════════════════════════════════╝${NC}"
    exit 0
else
    echo -e "${RED}✗ $FAILED test(s) ont échoué${NC}"
    exit 1
fi
