From 8ec79c917e23f87282b8711b6756807a9caaf8a7 Mon Sep 17 00:00:00 2001 From: Clare Macrae Date: Wed, 20 Nov 2024 22:19:53 +0000 Subject: [PATCH 1/3] test: - Check that onCompletion parsing is not case-sensitive --- tests/TaskSerializer/DefaultTaskSerializer.test.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/TaskSerializer/DefaultTaskSerializer.test.ts b/tests/TaskSerializer/DefaultTaskSerializer.test.ts index c3bfe5b4cd..eee1667ccc 100644 --- a/tests/TaskSerializer/DefaultTaskSerializer.test.ts +++ b/tests/TaskSerializer/DefaultTaskSerializer.test.ts @@ -170,7 +170,7 @@ describe.each(symbolMap)("DefaultTaskSerializer with '$taskFormat' symbols", ({ describe('should parse onCompletion', () => { it('should parse delete action', () => { - const onCompletion = `${onCompletionSymbol} delete`; + const onCompletion = `${onCompletionSymbol} Delete`; const taskDetails = deserialize(onCompletion); expect(taskDetails).toMatchTaskDetails({ onCompletion: OnCompletion.Delete }); }); From a699a5e4003c269fa6834a59ece0d42d427acfd1 Mon Sep 17 00:00:00 2001 From: Clare Macrae Date: Wed, 20 Nov 2024 22:55:24 +0000 Subject: [PATCH 2/3] test: - Add failing test showing that onCompletion parsing strictly requires one space --- tests/TaskSerializer/DefaultTaskSerializer.test.ts | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/tests/TaskSerializer/DefaultTaskSerializer.test.ts b/tests/TaskSerializer/DefaultTaskSerializer.test.ts index eee1667ccc..e56aa824c1 100644 --- a/tests/TaskSerializer/DefaultTaskSerializer.test.ts +++ b/tests/TaskSerializer/DefaultTaskSerializer.test.ts @@ -174,6 +174,12 @@ describe.each(symbolMap)("DefaultTaskSerializer with '$taskFormat' symbols", ({ const taskDetails = deserialize(onCompletion); expect(taskDetails).toMatchTaskDetails({ onCompletion: OnCompletion.Delete }); }); + + it.failing('should allow multiple spaces', () => { + const onCompletion = `${onCompletionSymbol} Keep`; + const taskDetails = deserialize(onCompletion); + expect(taskDetails).toMatchTaskDetails({ onCompletion: OnCompletion.Keep }); + }); }); describe('should parse depends on', () => { From 6f402799939863e8a69c06561d3e8aba322c3426 Mon Sep 17 00:00:00 2001 From: Clare Macrae Date: Thu, 21 Nov 2024 10:03:08 +0000 Subject: [PATCH 3/3] fix: - Allow multiple spaces after onCompletion emoji --- src/TaskSerializer/DefaultTaskSerializer.ts | 2 +- tests/TaskSerializer/DefaultTaskSerializer.test.ts | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/src/TaskSerializer/DefaultTaskSerializer.ts b/src/TaskSerializer/DefaultTaskSerializer.ts index 2a7c5ce845..e319346ff9 100644 --- a/src/TaskSerializer/DefaultTaskSerializer.ts +++ b/src/TaskSerializer/DefaultTaskSerializer.ts @@ -91,7 +91,7 @@ export const DEFAULT_SYMBOLS: DefaultTaskSerializerSymbols = { doneDateRegex: /✅ *(\d{4}-\d{2}-\d{2})$/u, cancelledDateRegex: /❌ *(\d{4}-\d{2}-\d{2})$/u, recurrenceRegex: /🔁 ?([a-zA-Z0-9, !]+)$/iu, - onCompletionRegex: /🏁 ?([a-zA-Z]+)$/iu, + onCompletionRegex: /🏁 *([a-zA-Z]+)$/iu, dependsOnRegex: new RegExp('⛔\uFE0F? *(' + taskIdSequenceRegex.source + ')$', 'iu'), idRegex: new RegExp('🆔 *(' + taskIdRegex.source + ')$', 'iu'), }, diff --git a/tests/TaskSerializer/DefaultTaskSerializer.test.ts b/tests/TaskSerializer/DefaultTaskSerializer.test.ts index e56aa824c1..8014eb70a9 100644 --- a/tests/TaskSerializer/DefaultTaskSerializer.test.ts +++ b/tests/TaskSerializer/DefaultTaskSerializer.test.ts @@ -71,7 +71,7 @@ describe('validate emoji regular expressions', () => { doneDateRegex: /✅ *(\\d{4}-\\d{2}-\\d{2})$/u cancelledDateRegex: /❌ *(\\d{4}-\\d{2}-\\d{2})$/u recurrenceRegex: /🔁 ?([a-zA-Z0-9, !]+)$/iu - onCompletionRegex: /🏁 ?([a-zA-Z]+)$/iu + onCompletionRegex: /🏁 *([a-zA-Z]+)$/iu dependsOnRegex: /⛔️? *([a-zA-Z0-9-_]+( *, *[a-zA-Z0-9-_]+ *)*)$/iu idRegex: /🆔 *([a-zA-Z0-9-_]+)$/iu" `); @@ -175,7 +175,7 @@ describe.each(symbolMap)("DefaultTaskSerializer with '$taskFormat' symbols", ({ expect(taskDetails).toMatchTaskDetails({ onCompletion: OnCompletion.Delete }); }); - it.failing('should allow multiple spaces', () => { + it('should allow multiple spaces', () => { const onCompletion = `${onCompletionSymbol} Keep`; const taskDetails = deserialize(onCompletion); expect(taskDetails).toMatchTaskDetails({ onCompletion: OnCompletion.Keep });