77 lines
2.3 KiB
Swift
77 lines
2.3 KiB
Swift
import XCTest
|
|
import MacToolsPluginKit
|
|
@testable import MacTools
|
|
@testable import LaunchControlPlugin
|
|
|
|
@MainActor
|
|
final class LaunchControlNotesStoreTests: XCTestCase {
|
|
private var suiteName: String!
|
|
private var defaults: UserDefaults!
|
|
|
|
override func setUp() {
|
|
super.setUp()
|
|
suiteName = "LaunchControlNotesStoreTests-\(UUID().uuidString)"
|
|
defaults = UserDefaults(suiteName: suiteName)
|
|
}
|
|
|
|
override func tearDown() {
|
|
defaults.removePersistentDomain(forName: suiteName)
|
|
defaults = nil
|
|
suiteName = nil
|
|
super.tearDown()
|
|
}
|
|
|
|
private func makeStore() -> LaunchControlNotesStore {
|
|
LaunchControlNotesStore(userDefaults: defaults)
|
|
}
|
|
|
|
func testNoteIsEmptyByDefault() {
|
|
let store = makeStore()
|
|
XCTAssertEqual(store.note(for: "com.example.agent"), "")
|
|
XCTAssertTrue(store.allNotes().isEmpty)
|
|
}
|
|
|
|
func testSetAndGetNote() {
|
|
let store = makeStore()
|
|
store.setNote("夜间重建索引", for: "com.example.agent")
|
|
XCTAssertEqual(store.note(for: "com.example.agent"), "夜间重建索引")
|
|
}
|
|
|
|
func testNoteIsTrimmedOnSave() {
|
|
let store = makeStore()
|
|
store.setNote(" 有空格 ", for: "x")
|
|
XCTAssertEqual(store.note(for: "x"), "有空格")
|
|
}
|
|
|
|
func testWhitespaceOnlyNoteClearsEntry() {
|
|
let store = makeStore()
|
|
store.setNote("保留", for: "x")
|
|
store.setNote(" \n ", for: "x")
|
|
XCTAssertEqual(store.note(for: "x"), "")
|
|
XCTAssertNil(store.allNotes()["x"])
|
|
}
|
|
|
|
func testEmptyStringClearsNote() {
|
|
let store = makeStore()
|
|
store.setNote("note", for: "z")
|
|
store.setNote("", for: "z")
|
|
XCTAssertEqual(store.note(for: "z"), "")
|
|
XCTAssertTrue(store.allNotes().isEmpty)
|
|
}
|
|
|
|
func testNotesPersistAcrossInstances() {
|
|
makeStore().setNote("持久化", for: "y")
|
|
// A fresh store backed by the same defaults must read the saved note.
|
|
XCTAssertEqual(makeStore().note(for: "y"), "持久化")
|
|
}
|
|
|
|
func testMultipleNotesAreIndependent() {
|
|
let store = makeStore()
|
|
store.setNote("a-note", for: "a")
|
|
store.setNote("b-note", for: "b")
|
|
XCTAssertEqual(store.note(for: "a"), "a-note")
|
|
XCTAssertEqual(store.note(for: "b"), "b-note")
|
|
XCTAssertEqual(store.allNotes().count, 2)
|
|
}
|
|
}
|