//
//  SaleUserQrParserTests.swift
//  suixinkanTests
//
//  Created by Codex on 2026/6/29.
//

import XCTest
@testable import suixinkan

final class SaleUserQrParserTests: XCTestCase {
    /// 测试纯数字二维码解析。
    func testParsePlainNumber() {
        XCTAssertEqual(SaleUserQrParser.parseSaleUserId("12345"), 12345)
    }

    /// 测试历史 JSON 格式解析。
    func testParseLegacyJSONWithoutMethod() {
        let json = #"{"sale_user_id":88}"#
        XCTAssertEqual(SaleUserQrParser.parseSaleUserId(json), 88)
    }

    /// 测试标准 sale_user_bind 二维码。
    func testParseStandardSaleUserBindQR() {
        let json = #"{"method":"sale_user_bind","sale_user_id":2}"#
        XCTAssertEqual(SaleUserQrParser.parseSaleUserId(json), 2)
        XCTAssertTrue(SaleUserQrParser.isSaleUserBindQR(json))
    }

    /// 测试 URL query 中的 sale_user_id。
    func testParseFromURLQuery() {
        let url = "https://example.com/bind?sale_user_id=99"
        XCTAssertEqual(SaleUserQrParser.parseSaleUserId(url), 99)
    }

    /// 测试无效内容返回 nil。
    func testParseInvalidContentReturnsNil() {
        XCTAssertNil(SaleUserQrParser.parseSaleUserId("not-a-code"))
        XCTAssertNil(SaleUserQrParser.parseSaleUserId(""))
        XCTAssertFalse(SaleUserQrParser.isSaleUserBindQR("12345"))
    }
}
