menu-bar/Tests/LilithMenuBarTests/MenuBarItemTests.swift
Natalie a8918229c0 feat(@packages/@swift/@macos/menu-bar): initial commit — LilithMenuBar
NSStatusItem menu-bar helper: MenuBarAgent (click/menu modes, dynamic
icon/menu updates) + MenuBarItem (.action/.label/.separator) + MenuBarIcon.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-05-31 17:24:53 -06:00

77 lines
2.1 KiB
Swift

#if canImport(AppKit)
import XCTest
@testable import LilithMenuBar
final class MenuBarItemTests: XCTestCase {
func testActionItemStoresTitle() {
let item = MenuBarItem.action(title: "Quit", key: "q") {}
if case .action(let title, let key, _) = item {
XCTAssertEqual(title, "Quit")
XCTAssertEqual(key, "q")
} else {
XCTFail("Expected .action case")
}
}
func testActionItemDefaultKeyIsEmpty() {
let item = MenuBarItem.action(title: "About") {}
if case .action(_, let key, _) = item {
XCTAssertEqual(key, "")
} else {
XCTFail("Expected .action case")
}
}
func testSeparatorCase() {
let item = MenuBarItem.separator
if case .separator = item {
// pass
} else {
XCTFail("Expected .separator case")
}
}
func testActionHandlerIsInvocable() {
var called = false
let item = MenuBarItem.action(title: "Test") { called = true }
if case .action(_, _, let action) = item {
action()
XCTAssertTrue(called)
} else {
XCTFail("Expected .action case")
}
}
func testMenuItemTrampolineInvokesHandler() {
var invoked = false
let trampoline = MenuItemTrampoline { invoked = true }
trampoline.invoke(nil)
XCTAssertTrue(invoked)
}
func testMenuBarIconSFSymbolCase() {
let icon = MenuBarIcon.sfSymbol("star", accessibilityDescription: "Star")
if case .sfSymbol(let name, let desc) = icon {
XCTAssertEqual(name, "star")
XCTAssertEqual(desc, "Star")
} else {
XCTFail("Expected .sfSymbol case")
}
}
func testMenuBarIconNamedCase() {
let icon = MenuBarIcon.named("AppIcon", accessibilityDescription: "App")
if case .named(let name, let desc) = icon {
XCTAssertEqual(name, "AppIcon")
XCTAssertEqual(desc, "App")
} else {
XCTFail("Expected .named case")
}
}
}
#endif