#!/usr/bin/env python3
"""
测试更新采购方式API
"""

import requests
import json

def test_update_procurement_method():
    """测试更新采购方式功能"""
    base_url = "http://localhost:8000/api/v1"
    
    # 首先获取一个订单
    print("获取待采购订单列表...")
    response = requests.get(f"{base_url}/procurement/orders?page=1&page_size=1")
    
    if response.status_code != 200:
        print(f"获取订单列表失败: {response.status_code}")
        return
    
    data = response.json()
    orders = data.get('orders', [])
    
    if not orders:
        print("没有找到待采购订单")
        return
    
    order = orders[0]
    order_id = order['原始订单编号']
    current_method = order['procurement_method']
    
    print(f"测试订单: {order_id}")
    print(f"当前采购方式: {current_method}")
    print(f"商品名称: {order['线上宝贝名称']}")
    
    # 选择一个不同的采购方式进行测试
    test_methods = ['GN', 'MC', 'AT', 'AP', 'LA', 'SS', 'SF', 'NY']
    new_method = None
    for method in test_methods:
        if method != current_method:
            new_method = method
            break
    
    if not new_method:
        print("无法找到不同的采购方式进行测试")
        return
    
    print(f"将采购方式更改为: {new_method}")
    
    # 更新采购方式
    update_url = f"{base_url}/procurement/orders/{order_id}/procurement-method"
    params = {"procurement_method": new_method}
    
    response = requests.put(update_url, params=params)
    
    if response.status_code == 200:
        result = response.json()
        print("✅ 更新成功!")
        print(f"响应: {json.dumps(result, ensure_ascii=False, indent=2)}")
        
        # 验证更新结果
        print("\n验证更新结果...")
        verify_response = requests.get(f"{base_url}/procurement/orders?page=1&page_size=1")
        if verify_response.status_code == 200:
            verify_data = verify_response.json()
            verify_orders = verify_data.get('orders', [])
            if verify_orders:
                verify_order = verify_orders[0]
                if verify_order['原始订单编号'] == order_id:
                    updated_method = verify_order['procurement_method']
                    print(f"验证结果 - 采购方式: {updated_method}")
                    if updated_method == new_method:
                        print("✅ 验证成功！采购方式已正确更新")
                    else:
                        print(f"❌ 验证失败！期望 {new_method}，实际 {updated_method}")
    else:
        print(f"❌ 更新失败: {response.status_code}")
        print(f"错误信息: {response.text}")

if __name__ == "__main__":
    test_update_procurement_method()