//
//  TestFixture.swift
//  suixinkanTests
//
//  Created by Codex on 2026/6/22.
//

import Foundation
@testable import suixinkan

/// 测试 Fixture 读取工具，用于复用旧工程迁移过来的 JSON 响应。
enum TestFixture {
    /// 读取指定名称的 JSON fixture。
    static func data(named name: String, filePath: String = #filePath) throws -> Data {
        let url = URL(fileURLWithPath: filePath)
            .deletingLastPathComponent()
            .appendingPathComponent("Fixtures")
            .appendingPathComponent("\(name).json")
        return try Data(contentsOf: url)
    }

    /// 读取并解包后端统一 Envelope。
    static func payload<T: Decodable>(_ type: T.Type, named name: String) throws -> T {
        let envelope = try JSONDecoder().decode(APIEnvelope<T>.self, from: data(named: name))
        guard let payload = envelope.data else {
            throw FixtureError.emptyPayload
        }
        return payload
    }
}

/// 测试 Fixture 错误实体。
enum FixtureError: Error {
    case emptyPayload
}
