Files
suixinkan_ios_new/suixinkanTests/WeChatShareServiceTests.swift
汉秋 a528d9b0d7 接入微信分享 SDK 并配置 Universal Link。
集成 WechatOpenSDK、www.zhifly.cn/suixinkan/ 通用链接与邀请页分享能力,附带 AASA 部署文件与单元测试。

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-07-02 15:02:37 +08:00

69 lines
2.6 KiB
Swift

//
// WeChatShareServiceTests.swift
// suixinkanTests
//
import UIKit
import XCTest
@testable import suixinkan
final class WeChatShareServiceTests: XCTestCase {
func testUniversalLinkMustEndWithSlash() {
XCTAssertTrue(WeChatConfig.validateUniversalLink(WeChatConfig.universalLink))
XCTAssertFalse(WeChatConfig.validateUniversalLink("https://www.zhifly.cn/suixinkan"))
XCTAssertFalse(WeChatConfig.validateUniversalLink("http://www.zhifly.cn/suixinkan/"))
}
func testShareSceneMapsToWXValues() {
XCTAssertEqual(WeChatShareScene.session.wxSceneValue, 0)
XCTAssertEqual(WeChatShareScene.timeline.wxSceneValue, 1)
XCTAssertEqual(WeChatShareScene.favorite.wxSceneValue, 2)
}
func testShareResultFromWXErrorCode() {
XCTAssertEqual(WeChatShareResult.fromWXErrorCode(0), .success)
XCTAssertEqual(WeChatShareResult.fromWXErrorCode(-2), .cancelled)
XCTAssertEqual(WeChatShareResult.fromWXErrorCode(99), .unknown(99))
}
func testThumbImageCompressionStaysWithinLimit() throws {
let size = CGSize(width: 512, height: 512)
let format = UIGraphicsImageRendererFormat.default()
format.scale = 1
let renderer = UIGraphicsImageRenderer(size: size, format: format)
let image = renderer.image { context in
UIColor.systemBlue.setFill()
context.fill(CGRect(origin: .zero, size: size))
}
let thumbData = try XCTUnwrap(WeChatThumbImageProcessor.makeThumbData(from: image))
XCTAssertLessThanOrEqual(thumbData.count, WeChatThumbImageProcessor.maxThumbBytes)
}
func testThumbImageResizeReducesLargeImage() {
let size = CGSize(width: 800, height: 600)
let format = UIGraphicsImageRendererFormat.default()
format.scale = 1
let renderer = UIGraphicsImageRenderer(size: size, format: format)
let image = renderer.image { _ in }
let resized = WeChatThumbImageProcessor.resize(image, maxPixel: 120)
XCTAssertLessThanOrEqual(max(resized.size.width, resized.size.height), 120)
}
func testWebPagePayloadValidationRequiresNonEmptyFields() async {
await MainActor.run {
let expectation = expectation(description: "invalid title")
WeChatShareService.shareWebPage(
WeChatWebPageSharePayload(title: " ", description: "desc", url: "https://example.com"),
scene: .session
) { result in
if case .invalidPayload = result {
expectation.fulfill()
}
}
wait(for: [expectation], timeout: 1)
}
}
}