59 lines
1.7 KiB
Swift
59 lines
1.7 KiB
Swift
import XCTest
|
|
@testable import MacTools
|
|
@testable import LockScreenPlugin
|
|
|
|
@MainActor
|
|
final class LockScreenPluginTests: XCTestCase {
|
|
func testMetadataIdentifiesLockScreenPlugin() {
|
|
let plugin = LockScreenPlugin()
|
|
|
|
XCTAssertEqual(plugin.metadata.id, "lock-screen")
|
|
XCTAssertEqual(plugin.metadata.title, "锁定屏幕")
|
|
}
|
|
|
|
func testControlStyleIsButton() {
|
|
let plugin = LockScreenPlugin()
|
|
|
|
XCTAssertEqual(plugin.primaryPanelDescriptor.controlStyle, .button)
|
|
XCTAssertEqual(plugin.primaryPanelDescriptor.buttonTitle, "锁定")
|
|
}
|
|
|
|
func testInitialStateIsOffAndEnabled() {
|
|
let plugin = LockScreenPlugin()
|
|
|
|
let state = plugin.primaryPanelState
|
|
XCTAssertFalse(state.isOn)
|
|
XCTAssertTrue(state.isEnabled)
|
|
}
|
|
|
|
func testPermissionRequirementsIsEmpty() {
|
|
let plugin = LockScreenPlugin()
|
|
|
|
XCTAssertTrue(plugin.permissionRequirements.isEmpty)
|
|
}
|
|
|
|
func testMenuActionBehaviorDismissesBeforeHandling() {
|
|
let plugin = LockScreenPlugin()
|
|
|
|
XCTAssertEqual(plugin.primaryPanelDescriptor.menuActionBehavior, .dismissBeforeHandling)
|
|
}
|
|
|
|
func testPluginHostIncludesLockScreenWhenProvided() {
|
|
let host = makePluginHostForTests(plugins: [LockScreenPlugin()])
|
|
|
|
XCTAssertTrue(host.featureManagementItems.contains { $0.id == "lock-screen" })
|
|
}
|
|
|
|
func testPluginDescriptionMatches() {
|
|
let plugin = LockScreenPlugin()
|
|
|
|
XCTAssertEqual(plugin.metadata.defaultDescription, "立即锁定屏幕")
|
|
}
|
|
|
|
func testHandleUnknownActionDoesNothing() {
|
|
let plugin = LockScreenPlugin()
|
|
|
|
plugin.handleAction(.setSwitch(true))
|
|
}
|
|
}
|