package cloud import ( "testing" ) func TestDecodeHuaweiBillPageRecords(t *testing.T) { body := []byte(`{ "currency":"CNY", "total_count":1, "records":[{ "service_type_name":"弹性云服务器", "region_name":"华南-广州", "consume_amount":"12.34" }] }`) page, err := decodeHuaweiBillPage(body) if err != nil { t.Fatalf("解析华为云账单失败: %v", err) } if page.TotalCount != 1 || page.Currency != "CNY" || len(page.Records) != 1 { t.Fatalf("账单分页字段错误: %+v", page) } record := page.Records[0] if record.ServiceTypeName != "弹性云服务器" || record.RegionName != "华南-广州" { t.Fatalf("账单维度字段错误: %+v", record) } if cost := huaweiBillRecordCost(record); cost != 12.34 { t.Fatalf("实际消费金额错误: %v", cost) } } func TestDecodeHuaweiBillPageFeeRecordsCompatibility(t *testing.T) { body := []byte(`{"total_count":1,"fee_records":[{"official_amount":20,"discount_amount":3}]}`) page, err := decodeHuaweiBillPage(body) if err != nil { t.Fatalf("解析旧版华为云账单失败: %v", err) } if len(page.FeeRecords) != 1 { t.Fatalf("旧版 fee_records 未解析: %+v", page) } if cost := huaweiBillRecordCost(page.FeeRecords[0]); cost != 17 { t.Fatalf("官网价减优惠金额错误: %v", cost) } }