#!/usr/bin/env python3
"""
测试批量更新功能
"""
import requests
import json
import sys

def test_batch_update():
    """测试批量更新API"""
    base_url = "http://localhost:8000/api/v1"
    
    # 1. 首先获取一些订单ID
    print("1. 获取订单列表...")
    response = requests.get(f"{base_url}/procurement/orders", params={
        "page": 1,
        "page_size": 5
    })
    
    if response.status_code != 200:
        print(f"获取订单失败: {response.status_code}")
        print(response.text)
        return False
    
    data = response.json()
    orders = data.get("orders", [])
    
    if len(orders) < 2:
        print("订单数量不足，无法测试批量更新")
        return False
    
    # 获取前两个订单的ID
    order_ids = [order["id"] for order in orders[:2]]
    print(f"选中订单ID: {order_ids}")
    
    # 打印当前订单信息
    print("\n当前订单信息:")
    for order in orders[:2]:
        print(f"  ID: {order['id']}, 品牌: {order.get('品牌', 'N/A')}, "
              f"货号: {order.get('货号', 'N/A')}, "
              f"采购方式: {order.get('procurement_method', 'N/A')}")
    
    # 2. 测试批量更新
    print("\n2. 测试批量更新...")
    update_data = {
        "order_ids": order_ids,
        "update_data": {
            "brand": "TEST_BRAND",
            "procurement_method": "NY"
        }
    }
    
    print(f"更新数据: {json.dumps(update_data, indent=2, ensure_ascii=False)}")
    
    response = requests.put(
        f"{base_url}/procurement/orders/batch-update",
        json=update_data
    )
    
    if response.status_code != 200:
        print(f"批量更新失败: {response.status_code}")
        print(response.text)
        return False
    
    result = response.json()
    print(f"\n批量更新结果: {json.dumps(result, indent=2, ensure_ascii=False)}")
    
    # 3. 验证更新结果
    print("\n3. 验证更新结果...")
    response = requests.get(f"{base_url}/procurement/orders", params={
        "page": 1,
        "page_size": 5
    })
    
    if response.status_code == 200:
        data = response.json()
        orders = data.get("orders", [])
        
        print("\n更新后的订单信息:")
        for order in orders:
            if order["id"] in order_ids:
                print(f"  ID: {order['id']}, 品牌: {order.get('品牌', 'N/A')}, "
                      f"货号: {order.get('货号', 'N/A')}, "
                      f"采购方式: {order.get('procurement_method', 'N/A')}")
    
    return True

if __name__ == "__main__":
    try:
        success = test_batch_update()
        if success:
            print("\n✅ 批量更新测试成功！")
        else:
            print("\n❌ 批量更新测试失败！")
            sys.exit(1)
    except Exception as e:
        print(f"\n❌ 测试过程中发生错误: {e}")
        sys.exit(1)