// // 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")) } }