/**
 * 快速测试脚本 - 只测试核心接口
 * 运行方式：npm run test:quick
 */

const axios = require('axios');

// 配置
const config = {
  baseURL: 'http://your-api-domain.com',  // ⚠️ 修改为你的API地址
  testUser: {
    username: 'test_user',     // ⚠️ 修改为测试账号
    password: 'test_password'  // ⚠️ 修改为测试密码
  }
};

let passCount = 0;
let failCount = 0;

function log(emoji, message) {
  console.log(`${emoji} ${message}`);
}

async function quickTest() {
  console.log('\n🚀 武术比赛报名系统 - 快速测试\n');
  console.log(`📍 API地址: ${config.baseURL}\n`);

  const api = axios.create({
    baseURL: config.baseURL,
    timeout: 10000,
    headers: { 'Content-Type': 'application/json' }
  });

  try {
    // 测试1：登录
    log('🔐', '测试登录...');
    const loginRes = await api.post('/martial/auth/login', config.testUser);
    if (loginRes.data.code === 200 && loginRes.data.data.token) {
      log('✅', '登录成功');
      passCount++;
      const token = loginRes.data.data.token;
      api.defaults.headers['Blade-Auth'] = `Bearer ${token}`;
    } else {
      log('❌', '登录失败');
      failCount++;
      return;
    }

    // 测试2：赛事列表
    log('📋', '测试赛事列表...');
    const compRes = await api.get('/martial/competition/list?current=1&size=10');
    if (compRes.data.code === 200) {
      const count = compRes.data.data.records?.length || compRes.data.data?.length || 0;
      log('✅', `赛事列表获取成功 (${count}条数据)`);
      passCount++;
    } else {
      log('❌', '赛事列表获取失败');
      failCount++;
    }

    // 测试3：选手列表
    log('👥', '测试选手列表...');
    const athleteRes = await api.get('/martial/athlete/list?current=1&size=10');
    if (athleteRes.data.code === 200) {
      const count = athleteRes.data.data.records?.length || athleteRes.data.data?.length || 0;
      log('✅', `选手列表获取成功 (${count}条数据)`);
      passCount++;
    } else {
      log('❌', '选手列表获取失败');
      failCount++;
    }

    // 测试4：用户信息
    log('👤', '测试用户信息...');
    const userRes = await api.get('/martial/user/info');
    if (userRes.data.code === 200) {
      log('✅', `用户信息获取成功 (${userRes.data.data.name || '未知'})`);
      passCount++;
    } else {
      log('❌', '用户信息获取失败');
      failCount++;
    }

    // 测试5：报名列表
    log('📝', '测试报名列表...');
    const regRes = await api.get('/martial/registration/list?current=1&size=10');
    if (regRes.data.code === 200) {
      const count = regRes.data.data.records?.length || regRes.data.data?.length || 0;
      log('✅', `报名列表获取成功 (${count}条数据)`);
      passCount++;
    } else {
      log('❌', '报名列表获取失败');
      failCount++;
    }

  } catch (error) {
    log('❌', `请求失败: ${error.message}`);
    failCount++;
  }

  // 输出结果
  console.log('\n' + '='.repeat(50));
  console.log(`📊 测试结果: ${passCount}个通过, ${failCount}个失败`);
  console.log(`✨ 成功率: ${((passCount / (passCount + failCount)) * 100).toFixed(1)}%`);
  console.log('='.repeat(50) + '\n');

  process.exit(failCount > 0 ? 1 : 0);
}

quickTest().catch(err => {
  console.error('❌ 测试执行失败:', err.message);
  process.exit(1);
});
