//
//  PaymentModelsTests.swift
//  suixinkanTests
//

import XCTest
@testable import suixinkan

/// 收款模型解码测试。
final class PaymentModelsTests: XCTestCase {
    func testPayCodeResponseDecodesSnakeCaseFields() throws {
        let json = """
        {
          "static_pay_url": "https://pay.example.com/static",
          "dynamic_pay_url": "https://pay.example.com/dynamic"
        }
        """.data(using: .utf8)!

        let response = try JSONDecoder().decode(PayCodeResponse.self, from: json)

        XCTAssertEqual(response.staticPayURL, "https://pay.example.com/static")
        XCTAssertEqual(response.dynamicPayURL, "https://pay.example.com/dynamic")
    }

    func testRepaymentCollectionRecordResponseDecodesGroupedFields() throws {
        let json = """
        {
          "analyse": [
            {
              "date": "2024-01-15",
              "order_count": 2,
              "order_amount_sum": "100.00"
            }
          ],
          "list": [
            {
              "order_number": "NO001",
              "user_phone": "13800138000",
              "order_amount": "50.00",
              "create_date": "2024-01-15",
              "create_time": "10:00:00"
            }
          ]
        }
        """.data(using: .utf8)!

        let response = try JSONDecoder().decode(RepaymentCollectionRecordResponse.self, from: json)

        XCTAssertEqual(response.analyse.count, 1)
        XCTAssertEqual(response.analyse[0].orderCount, 2)
        XCTAssertEqual(response.list[0].orderNumber, "NO001")
    }
}
