158 lines
4.5 KiB
Bash
158 lines
4.5 KiB
Bash
#!/bin/bash
|
|
|
|
# ============================================
|
|
# 完整测试运行脚本
|
|
# Run all tests for referral-service
|
|
# ============================================
|
|
|
|
set -e
|
|
|
|
echo "============================================"
|
|
echo "Referral Service - Complete Test Suite"
|
|
echo "============================================"
|
|
echo ""
|
|
|
|
# Colors for output
|
|
RED='\033[0;31m'
|
|
GREEN='\033[0;32m'
|
|
YELLOW='\033[1;33m'
|
|
NC='\033[0m' # No Color
|
|
|
|
# Track test results
|
|
UNIT_RESULT=0
|
|
INTEGRATION_RESULT=0
|
|
E2E_RESULT=0
|
|
DOCKER_RESULT=0
|
|
|
|
# Function to print status
|
|
print_status() {
|
|
if [ $1 -eq 0 ]; then
|
|
echo -e "${GREEN}✓ $2 PASSED${NC}"
|
|
else
|
|
echo -e "${RED}✗ $2 FAILED${NC}"
|
|
fi
|
|
}
|
|
|
|
# Change to project directory
|
|
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|
cd "$SCRIPT_DIR/.."
|
|
|
|
echo "Working directory: $(pwd)"
|
|
echo ""
|
|
|
|
# ============================================
|
|
# 1. Install dependencies
|
|
# ============================================
|
|
echo -e "${YELLOW}Step 1: Installing dependencies...${NC}"
|
|
npm install
|
|
echo ""
|
|
|
|
# ============================================
|
|
# 2. Generate Prisma client
|
|
# ============================================
|
|
echo -e "${YELLOW}Step 2: Generating Prisma client...${NC}"
|
|
npx prisma generate
|
|
echo ""
|
|
|
|
# ============================================
|
|
# 3. Build the project
|
|
# ============================================
|
|
echo -e "${YELLOW}Step 3: Building the project...${NC}"
|
|
npm run build
|
|
echo ""
|
|
|
|
# ============================================
|
|
# 4. Run Unit Tests
|
|
# ============================================
|
|
echo "============================================"
|
|
echo -e "${YELLOW}Step 4: Running Unit Tests...${NC}"
|
|
echo "============================================"
|
|
if npm test; then
|
|
UNIT_RESULT=0
|
|
else
|
|
UNIT_RESULT=1
|
|
fi
|
|
echo ""
|
|
|
|
# ============================================
|
|
# 5. Run Integration Tests
|
|
# ============================================
|
|
echo "============================================"
|
|
echo -e "${YELLOW}Step 5: Running Integration Tests...${NC}"
|
|
echo "============================================"
|
|
if npm run test:integration 2>/dev/null || npm test -- --testRegex="integration.spec.ts$"; then
|
|
INTEGRATION_RESULT=0
|
|
else
|
|
INTEGRATION_RESULT=1
|
|
fi
|
|
echo ""
|
|
|
|
# ============================================
|
|
# 6. Run E2E Tests
|
|
# ============================================
|
|
echo "============================================"
|
|
echo -e "${YELLOW}Step 6: Running E2E Tests...${NC}"
|
|
echo "============================================"
|
|
if npm run test:e2e 2>/dev/null || npm test -- --testRegex="e2e-spec.ts$"; then
|
|
E2E_RESULT=0
|
|
else
|
|
E2E_RESULT=1
|
|
fi
|
|
echo ""
|
|
|
|
# ============================================
|
|
# 7. Run Docker Tests (optional)
|
|
# ============================================
|
|
echo "============================================"
|
|
echo -e "${YELLOW}Step 7: Running Docker Tests...${NC}"
|
|
echo "============================================"
|
|
|
|
if command -v docker &> /dev/null && command -v docker-compose &> /dev/null; then
|
|
echo "Docker is available, running containerized tests..."
|
|
|
|
# Build and run tests in Docker
|
|
if docker-compose -f docker-compose.test.yml build test && \
|
|
docker-compose -f docker-compose.test.yml up --abort-on-container-exit test; then
|
|
DOCKER_RESULT=0
|
|
else
|
|
DOCKER_RESULT=1
|
|
fi
|
|
|
|
# Cleanup
|
|
docker-compose -f docker-compose.test.yml down -v
|
|
else
|
|
echo -e "${YELLOW}Docker not available, skipping Docker tests${NC}"
|
|
DOCKER_RESULT=-1
|
|
fi
|
|
echo ""
|
|
|
|
# ============================================
|
|
# Summary
|
|
# ============================================
|
|
echo "============================================"
|
|
echo "TEST SUMMARY"
|
|
echo "============================================"
|
|
print_status $UNIT_RESULT "Unit Tests"
|
|
print_status $INTEGRATION_RESULT "Integration Tests"
|
|
print_status $E2E_RESULT "E2E Tests"
|
|
if [ $DOCKER_RESULT -eq -1 ]; then
|
|
echo -e "${YELLOW}○ Docker Tests SKIPPED${NC}"
|
|
else
|
|
print_status $DOCKER_RESULT "Docker Tests"
|
|
fi
|
|
echo "============================================"
|
|
|
|
# Calculate overall result
|
|
TOTAL_FAILURES=$((UNIT_RESULT + INTEGRATION_RESULT + E2E_RESULT))
|
|
if [ $DOCKER_RESULT -gt 0 ]; then
|
|
TOTAL_FAILURES=$((TOTAL_FAILURES + DOCKER_RESULT))
|
|
fi
|
|
|
|
if [ $TOTAL_FAILURES -eq 0 ]; then
|
|
echo -e "${GREEN}All tests passed!${NC}"
|
|
exit 0
|
|
else
|
|
echo -e "${RED}Some tests failed!${NC}"
|
|
exit 1
|
|
fi
|