Files
suixinkan_uikit/suixinkanTests/WeChatShareServiceTests.swift

70 lines
2.6 KiB
Swift

//
// WeChatShareServiceTests.swift
// suixinkanTests
//
import UIKit
import XCTest
@testable import suixinkan
///
@MainActor
final class WeChatShareServiceTests: XCTestCase {
/// Universal Link HTTPS `/`
func testUniversalLinkMustUseHTTPSAndEndWithSlash() {
XCTAssertTrue(WeChatConfig.validateUniversalLink(WeChatConfig.universalLink))
XCTAssertFalse(WeChatConfig.validateUniversalLink("https://www.zhifly.cn/suixinkan"))
XCTAssertFalse(WeChatConfig.validateUniversalLink("http://www.zhifly.cn/suixinkan/"))
}
/// SDK scene
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 testThumbImageProcessorKeepsDataUnderLimit() throws {
let renderer = UIGraphicsImageRenderer(size: CGSize(width: 640, height: 640))
let image = renderer.image { context in
UIColor.systemBlue.setFill()
context.fill(CGRect(x: 0, y: 0, width: 640, height: 640))
UIColor.white.setFill()
context.fill(CGRect(x: 80, y: 80, width: 480, height: 480))
}
let thumbData = try XCTUnwrap(WeChatThumbImageProcessor.makeThumbData(from: image))
XCTAssertLessThanOrEqual(thumbData.count, WeChatThumbImageProcessor.maxThumbBytes)
}
///
func testShareWebPageRejectsInvalidPayloadBeforeSending() {
var results: [WeChatShareResult] = []
WeChatShareService.shareWebPage(
WeChatWebPageSharePayload(title: " ", description: "desc", url: "https://example.com"),
scene: .session
) { result in
results.append(result)
}
WeChatShareService.shareWebPage(
WeChatWebPageSharePayload(title: "title", description: "desc", url: " "),
scene: .session
) { result in
results.append(result)
}
XCTAssertEqual(results, [
.invalidPayload("分享标题不能为空"),
.invalidPayload("分享链接不能为空"),
])
}
}