From e5e024a5f4c8709cf2a28dc3bfab79d8037516e1 Mon Sep 17 00:00:00 2001 From: Ruben Beltran del Rio Date: Tue, 16 Jun 2026 15:22:08 +0200 Subject: Support all bare modifiers --- .../EditorSnippetTests.swift | 38 ++++++++++++++++++++++ 1 file changed, 38 insertions(+) (limited to 'Tests') 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- ( ) ") + } } -- cgit