59 lines
1.7 KiB
Swift
59 lines
1.7 KiB
Swift
import XCTest
|
|
@testable import MacTools
|
|
@testable import DisplaySleepPlugin
|
|
|
|
@MainActor
|
|
final class DisplaySleepPluginTests: XCTestCase {
|
|
func testMetadataIdentifiesDisplaySleepPlugin() {
|
|
let plugin = DisplaySleepPlugin()
|
|
|
|
XCTAssertEqual(plugin.metadata.id, "display-sleep")
|
|
XCTAssertEqual(plugin.metadata.title, "显示器休眠")
|
|
}
|
|
|
|
func testControlStyleIsButton() {
|
|
let plugin = DisplaySleepPlugin()
|
|
|
|
XCTAssertEqual(plugin.primaryPanelDescriptor.controlStyle, .button)
|
|
XCTAssertEqual(plugin.primaryPanelDescriptor.buttonTitle, "休眠")
|
|
}
|
|
|
|
func testInitialStateIsOffAndEnabled() {
|
|
let plugin = DisplaySleepPlugin()
|
|
|
|
let state = plugin.primaryPanelState
|
|
XCTAssertFalse(state.isOn)
|
|
XCTAssertTrue(state.isEnabled)
|
|
}
|
|
|
|
func testPermissionRequirementsIsEmpty() {
|
|
let plugin = DisplaySleepPlugin()
|
|
|
|
XCTAssertTrue(plugin.permissionRequirements.isEmpty)
|
|
}
|
|
|
|
func testMenuActionBehaviorDismissesBeforeHandling() {
|
|
let plugin = DisplaySleepPlugin()
|
|
|
|
XCTAssertEqual(plugin.primaryPanelDescriptor.menuActionBehavior, .dismissBeforeHandling)
|
|
}
|
|
|
|
func testPluginHostIncludesDisplaySleepWhenProvided() {
|
|
let host = makePluginHostForTests(plugins: [DisplaySleepPlugin()])
|
|
|
|
XCTAssertTrue(host.featureManagementItems.contains { $0.id == "display-sleep" })
|
|
}
|
|
|
|
func testPluginDescriptionMatches() {
|
|
let plugin = DisplaySleepPlugin()
|
|
|
|
XCTAssertEqual(plugin.metadata.defaultDescription, "立即让显示器休眠")
|
|
}
|
|
|
|
func testHandleUnknownActionDoesNothing() {
|
|
let plugin = DisplaySleepPlugin()
|
|
|
|
plugin.handleAction(.setSwitch(true))
|
|
}
|
|
}
|