Files
wehub-resource-sync 1d1286fadb
Build / Build and test (push) Has been cancelled
chore: import upstream snapshot with attribution
2026-07-13 13:18:38 +08:00

94 lines
2.5 KiB
Swift

import XCTest
@testable import MacTools
@testable import FixDamagedAppPlugin
@MainActor
final class FixDamagedAppPluginTests: XCTestCase {
// MARK: - Metadata
func testMetadataID() {
let plugin = FixDamagedAppPlugin()
XCTAssertEqual(plugin.metadata.id, "fix-damaged-app")
}
func testMetadataTitle() {
let plugin = FixDamagedAppPlugin()
XCTAssertEqual(plugin.metadata.title, "修复损坏应用")
}
func testMetadataDefaultDescription() {
let plugin = FixDamagedAppPlugin()
XCTAssertEqual(plugin.metadata.defaultDescription, "移除隔离属性,解决「已损坏」或「不受信任」提示")
}
// MARK: - Primary Panel Descriptor
func testControlStyleIsButton() {
let plugin = FixDamagedAppPlugin()
XCTAssertEqual(plugin.primaryPanelDescriptor.controlStyle, .button)
XCTAssertEqual(plugin.primaryPanelDescriptor.buttonTitle, "选择")
}
func testMenuActionBehaviorIsDismissBeforeHandling() {
let plugin = FixDamagedAppPlugin()
XCTAssertEqual(plugin.primaryPanelDescriptor.menuActionBehavior, .dismissBeforeHandling)
}
// MARK: - Initial Primary Panel State
func testInitialPrimaryStateIsEnabledAndNotOn() {
let plugin = FixDamagedAppPlugin()
let state = plugin.primaryPanelState
XCTAssertTrue(state.isEnabled)
XCTAssertFalse(state.isOn)
}
func testInitialPrimarySubtitlePromptsSelection() {
let plugin = FixDamagedAppPlugin()
XCTAssertEqual(plugin.primaryPanelState.subtitle, "选择 .app 文件以修复")
}
func testInitialPrimaryStateHasNoError() {
let plugin = FixDamagedAppPlugin()
XCTAssertNil(plugin.primaryPanelState.errorMessage)
}
// MARK: - Permission & Settings
func testPermissionRequirementsIsEmpty() {
let plugin = FixDamagedAppPlugin()
XCTAssertTrue(plugin.permissionRequirements.isEmpty)
}
func testSettingsSectionsIsEmpty() {
let plugin = FixDamagedAppPlugin()
XCTAssertTrue(plugin.settingsSections.isEmpty)
}
func testPermissionStateAlwaysGranted() {
let plugin = FixDamagedAppPlugin()
let state = plugin.permissionState(for: "any-permission-id")
XCTAssertTrue(state.isGranted)
}
// MARK: - Plugin Host Integration
func testPluginHostIncludesFixDamagedApp() {
let host = makePluginHostForTests(plugins: [FixDamagedAppPlugin()])
XCTAssertTrue(host.featureManagementItems.contains { $0.id == "fix-damaged-app" })
}
}