aboutsummaryrefslogtreecommitdiff
path: root/Tests/NorgKeyboardToolbarTests
diff options
context:
space:
mode:
Diffstat (limited to 'Tests/NorgKeyboardToolbarTests')
-rw-r--r--Tests/NorgKeyboardToolbarTests/EditorSnippetTests.swift38
1 files changed, 38 insertions, 0 deletions
diff --git a/Tests/NorgKeyboardToolbarTests/EditorSnippetTests.swift b/Tests/NorgKeyboardToolbarTests/EditorSnippetTests.swift
index 00a9332..a1ff135 100644
--- a/Tests/NorgKeyboardToolbarTests/EditorSnippetTests.swift
+++ b/Tests/NorgKeyboardToolbarTests/EditorSnippetTests.swift
@@ -147,4 +147,42 @@ struct EditorSnippetTests {
let result = EditorSnippet.heading.apply(to: "~ ", cursor: 2)
#expect(result.text == "~ \n* ")
}
+
+ // MARK: - Task button supports every detached modifier
+
+ @Test func taskAddsMarkerToBareUnorderedListItem() {
+ // "- |" -> "- ( ) |"
+ let result = EditorSnippet.task.apply(to: "- ", cursor: 2)
+ #expect(result.text == "- ( ) ")
+ #expect(result.cursor == 6)
+ }
+
+ @Test func taskAddsMarkerToEveryDetachedModifier() {
+ // Quotes, definitions, footnotes and the like all carry tasks per the
+ // Norg spec, matching NorgKit's task scanner.
+ for marker in [">", "$", "^", ":"] {
+ let result = EditorSnippet.task.apply(to: "\(marker) ", cursor: 2)
+ #expect(result.text == "\(marker) ( ) ")
+ #expect(result.cursor == 6)
+ }
+ }
+
+ @Test func taskAddsMarkerToNestedDetachedModifierPreservingContent() {
+ // ">> |Quote" -> ">> ( ) |Quote"
+ let result = EditorSnippet.task.apply(to: ">> Quote", cursor: 3)
+ #expect(result.text == ">> ( ) Quote")
+ #expect(result.cursor == 7)
+ }
+
+ @Test func taskIgnoresWeakDelimiterMadeOfDashes() {
+ // "---|" is a delimiter, not a list item — start a new task line instead.
+ let result = EditorSnippet.task.apply(to: "---", cursor: 3)
+ #expect(result.text == "---\n- ( ) ")
+ }
+
+ @Test func taskInsertsNewLineWhenMarkerHasNoSeparatingSpace() {
+ // A bare marker with no trailing space isn't a detached modifier yet.
+ let result = EditorSnippet.task.apply(to: ">", cursor: 1)
+ #expect(result.text == ">\n- ( ) ")
+ }
}