#!/bin/bash
# Descomplicar® Crescimento Digital
# https://descomplicar.pt

# Care API Unit Tests Runner
# Script para executar os 5 testes unitários criados para as classes API_Init e Auth_Endpoints

set -e  # Exit on any error

echo "🧪 Care API - Unit Tests Runner"
echo "================================="
echo ""

# Check if PHPUnit exists
if [ ! -f "vendor/bin/phpunit" ]; then
    echo "❌ PHPUnit não encontrado. A instalar dependências..."
    composer install --dev
fi

# Check if WordPress test suite is installed
if [ ! -d "/tmp/wordpress-tests-lib" ]; then
    echo "❌ WordPress Test Suite não encontrado. A instalar..."
    echo "Executar: bash bin/install-wp-tests.sh wordpress_test root '' localhost latest"
    exit 1
fi

echo "📋 A executar syntax check..."
php -l tests/unit/Core/ApiInitTest.php
php -l tests/unit/Endpoints/AuthEndpointsTest.php
echo "✅ Syntax check passou"
echo ""

echo "🏗️  Classes testadas:"
echo "   • Care_API\API_Init (5 testes)"
echo "   • Care_API\Endpoints\Auth_Endpoints (5 testes)"
echo ""

echo "🎯 Testes unitários criados:"
echo "   1. test_plugin_initialization() - Inicialização do plugin"
echo "   2. test_endpoint_registration() - Registo de endpoints REST API"
echo "   3. test_service_dependency_injection() - Injeção de dependências"
echo "   4. test_auth_endpoints_functionality() - Funcionalidade de autenticação"
echo "   5. test_error_handler_setup() - Configuração do error handler"
echo ""

# Run specific unit tests with verbose output
echo "🚀 A executar testes unitários..."
echo ""

echo "▶️  1/2 - API_Init Tests (Core)"
vendor/bin/phpunit tests/unit/Core/ApiInitTest.php --verbose --testdox

echo ""
echo "▶️  2/2 - Auth_Endpoints Tests"
vendor/bin/phpunit tests/unit/Endpoints/AuthEndpointsTest.php --verbose --testdox

echo ""
echo "📊 A executar todos os unit tests com cobertura..."
vendor/bin/phpunit --testsuite "KiviCare API Unit Tests" --coverage-text --colors

echo ""
echo "📈 Estatísticas de cobertura geradas em coverage-html/"
echo ""

# Run with testdox for better readability
echo "📋 Relatório detalhado dos testes:"
vendor/bin/phpunit --testsuite "KiviCare API Unit Tests" --testdox

echo ""
echo "✅ Todos os testes unitários concluídos!"
echo ""
echo "📁 Ficheiros criados:"
echo "   • tests/unit/Core/ApiInitTest.php"
echo "   • tests/unit/Endpoints/AuthEndpointsTest.php"
echo "   • tests/unit/README.md"
echo ""
echo "🎯 Funcionalidades testadas:"
echo "   ✅ Plugin initialization"
echo "   ✅ REST API endpoint registration"
echo "   ✅ Service dependency injection"
echo "   ✅ Authentication workflows"
echo "   ✅ Error handler setup"
echo "   ✅ WordPress hook integration"
echo "   ✅ JWT token management"
echo "   ✅ User authorization and permissions"
echo "   ✅ Rate limiting and security"
echo "   ✅ Profile management operations"
echo ""
echo "📖 Para mais informações, consultar tests/unit/README.md"