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

90 lines
2.6 KiB
Swift

import XCTest
@testable import MacTools
@testable import EjectDiskPlugin
@MainActor
final class EjectDiskPluginTests: XCTestCase {
func testMetadataIdentifiesEjectDiskPlugin() {
let plugin = EjectDiskPlugin()
XCTAssertEqual(plugin.metadata.id, "eject-disk")
XCTAssertEqual(plugin.metadata.title, "推出磁盘")
}
func testControlStyleIsButton() {
let plugin = EjectDiskPlugin()
XCTAssertEqual(plugin.primaryPanelDescriptor.controlStyle, .button)
XCTAssertEqual(plugin.primaryPanelDescriptor.buttonTitle, "推出")
}
func testInitialStateHasEjectedOffAndIsDisabled() {
let plugin = EjectDiskPlugin()
let state = plugin.primaryPanelState
XCTAssertFalse(state.isOn)
XCTAssertFalse(state.isEnabled)
}
func testPermissionRequirementsIsEmpty() {
let plugin = EjectDiskPlugin()
XCTAssertTrue(plugin.permissionRequirements.isEmpty)
}
func testPluginHostIncludesEjectDiskWhenProvided() {
let host = makePluginHostForTests(plugins: [EjectDiskPlugin()])
XCTAssertTrue(host.featureManagementItems.contains { $0.id == "eject-disk" })
}
func testPluginDescriptionMatches() {
let plugin = EjectDiskPlugin()
XCTAssertEqual(plugin.metadata.defaultDescription, "推出所有可移动磁盘")
}
func testSubtitleShowsNoEjectableDiskWhenCountIsZero() {
let plugin = EjectDiskPlugin()
XCTAssertEqual(plugin.primaryPanelState.subtitle, "无可推出的磁盘")
}
func testEjectableVolumeRequiresExplicitExternalLocalVolumeProperties() {
XCTAssertTrue(EjectDiskPlugin.isEjectableVolume(
isEjectable: true,
isInternal: false,
isLocal: true
))
}
func testEjectableVolumeRejectsInternalSystemVolume() {
XCTAssertFalse(EjectDiskPlugin.isEjectableVolume(
isEjectable: true,
isInternal: true,
isLocal: true
))
}
func testEjectableVolumeRejectsNetworkVolume() {
XCTAssertFalse(EjectDiskPlugin.isEjectableVolume(
isEjectable: true,
isInternal: false,
isLocal: false
))
}
func testEjectableVolumeRejectsUnknownProperties() {
XCTAssertFalse(EjectDiskPlugin.isEjectableVolume(
isEjectable: true,
isInternal: nil,
isLocal: true
))
XCTAssertFalse(EjectDiskPlugin.isEjectableVolume(
isEjectable: nil,
isInternal: false,
isLocal: true
))
}
}