feat: add emoji favorites and directional shortcuts
This commit is contained in:
@@ -67,3 +67,45 @@ import Testing
|
||||
let table = try #require(descendants(content).compactMap { $0 as? NSTableView }.first)
|
||||
#expect(table.numberOfRows == 1)
|
||||
}
|
||||
|
||||
@Test @MainActor func emojiFavoritesPersistAndNavigationCrossesTheSpacingBreak() throws {
|
||||
_ = NSApplication.shared
|
||||
let suite = "ConjureEmojiFavorites.\(UUID().uuidString)"
|
||||
let defaults = UserDefaults(suiteName: suite)!
|
||||
let pasteboard = NSPasteboard.withUniqueName()
|
||||
defer { defaults.removePersistentDomain(forName: suite); pasteboard.releaseGlobally() }
|
||||
var query = "👩💻"
|
||||
let picker = EmojiPickerController(defaults: defaults, pasteboard: pasteboard)
|
||||
picker.input = { query }
|
||||
picker.view.frame = NSRect(x: 0, y: 0, width: 750, height: 400)
|
||||
picker.toggleFavorite()
|
||||
#expect(defaults.stringArray(forKey: "favoriteEmoji") == ["👩💻"])
|
||||
query = ""
|
||||
picker.inputChanged()
|
||||
picker.view.layoutSubtreeIfNeeded()
|
||||
let grid = try #require(picker.view.subviews.compactMap { $0 as? NSScrollView }.first?.documentView as? NSCollectionView)
|
||||
#expect(grid.numberOfSections == 2)
|
||||
#expect(grid.numberOfItems(inSection: 0) == 1)
|
||||
#expect(picker.handleControlKey("j"))
|
||||
picker.copySelection()
|
||||
#expect(pasteboard.string(forType: .string) == EmojiCatalog.all[0].value)
|
||||
#expect(picker.handleControlKey("k"))
|
||||
picker.copySelection()
|
||||
#expect(pasteboard.string(forType: .string) == "👩💻")
|
||||
#expect(picker.handleControlKey("l"))
|
||||
#expect(picker.handleControlKey("l"))
|
||||
#expect(picker.handleControlKey("h"))
|
||||
picker.copySelection()
|
||||
#expect(pasteboard.string(forType: .string) == EmojiCatalog.all[0].value)
|
||||
#expect(picker.handleControlKey("k"))
|
||||
picker.toggleFavorite()
|
||||
#expect(defaults.stringArray(forKey: "favoriteEmoji") == [])
|
||||
#expect(grid.numberOfSections == 1)
|
||||
query = "👩💻"
|
||||
picker.inputChanged()
|
||||
picker.toggleFavorite()
|
||||
let reopened = EmojiPickerController(defaults: defaults, pasteboard: pasteboard)
|
||||
_ = reopened.view
|
||||
reopened.copySelection()
|
||||
#expect(pasteboard.string(forType: .string) == "👩💻")
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user