#!/bin/bash

# 색상 정의
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
BLUE='\033[0;34m'
NC='\033[0m' # No Color

echo -e "${BLUE}═══════════════════════════════════════════════════════════════${NC}"
echo -e "${BLUE}    🚀 SUPERPORT 자동화 테스트 전체 실행 스크립트 🚀${NC}"
echo -e "${BLUE}═══════════════════════════════════════════════════════════════${NC}"
echo ""

# 시작 시간 기록
START_TIME=$(date +%s)

# 테스트 결과 저장 변수
TOTAL_TESTS=0
PASSED_TESTS=0
FAILED_TESTS=0

# 테스트 실행 함수
run_test() {
    local test_name=$1
    local test_file=$2
    
    echo -e "${YELLOW}▶️ $test_name 시작...${NC}"
    
    if flutter test "$test_file" --no-pub; then
        echo -e "${GREEN}✅ $test_name 성공!${NC}"
        ((PASSED_TESTS++))
    else
        echo -e "${RED}❌ $test_name 실패!${NC}"
        ((FAILED_TESTS++))
    fi
    
    ((TOTAL_TESTS++))
    echo ""
}

# 환경 확인
echo -e "${BLUE}📋 환경 확인 중...${NC}"
flutter --version
echo ""

# 개별 테스트 실행 (순차적)
echo -e "${BLUE}📊 개별 화면 테스트 실행${NC}"
echo -e "${BLUE}───────────────────────────────────────────────────────────────${NC}"

# Equipment In 테스트
if [ -f "test/integration/automated/run_equipment_in_test.dart" ]; then
    run_test "장비 입고 테스트" "test/integration/automated/run_equipment_in_test.dart"
fi

# Company 테스트
run_test "회사 관리 테스트" "test/integration/automated/run_company_test.dart"

# User 테스트
run_test "사용자 관리 테스트" "test/integration/automated/run_user_test.dart"

# Warehouse 테스트
run_test "창고 관리 테스트" "test/integration/automated/run_warehouse_test.dart"

# License 테스트
if [ -f "test/integration/automated/screens/license/license_screen_test_runner.dart" ]; then
    run_test "라이선스 관리 테스트" "test/integration/automated/screens/license/license_screen_test_runner.dart"
fi

# Master Test Suite 실행 (병렬)
echo -e "${BLUE}📊 통합 테스트 스위트 실행 (병렬)${NC}"
echo -e "${BLUE}───────────────────────────────────────────────────────────────${NC}"
run_test "마스터 테스트 스위트" "test/integration/automated/master_test_suite.dart"

# 종료 시간 및 소요 시간 계산
END_TIME=$(date +%s)
DURATION=$((END_TIME - START_TIME))
MINUTES=$((DURATION / 60))
SECONDS=$((DURATION % 60))

# 최종 결과 출력
echo -e "${BLUE}═══════════════════════════════════════════════════════════════${NC}"
echo -e "${BLUE}                    📊 최종 테스트 결과 📊${NC}"
echo -e "${BLUE}═══════════════════════════════════════════════════════════════${NC}"
echo ""
echo -e "  전체 테스트: ${TOTAL_TESTS}개"
echo -e "  ${GREEN}✅ 성공: ${PASSED_TESTS}개${NC}"
echo -e "  ${RED}❌ 실패: ${FAILED_TESTS}개${NC}"
echo -e "  ⏱️ 소요 시간: ${MINUTES}분 ${SECONDS}초"
echo ""

# 성공률 계산
if [ $TOTAL_TESTS -gt 0 ]; then
    SUCCESS_RATE=$(echo "scale=1; $PASSED_TESTS * 100 / $TOTAL_TESTS" | bc)
    echo -e "  📊 성공률: ${SUCCESS_RATE}%"
fi

echo ""
echo -e "${BLUE}═══════════════════════════════════════════════════════════════${NC}"

# Exit code 설정
if [ $FAILED_TESTS -eq 0 ]; then
    echo -e "${GREEN}🎉 모든 테스트가 성공했습니다!${NC}"
    exit 0
else
    echo -e "${RED}⚠️ 일부 테스트가 실패했습니다. 로그를 확인하세요.${NC}"
    exit 1
fi