From 9647d5e0425b79f8bab554e65068343f39211db7 Mon Sep 17 00:00:00 2001 From: PJ Date: Sun, 31 May 2026 18:57:34 +0530 Subject: [PATCH] test(folio): cover submit predicate with raw typed-amount inputs Pipes realistic raw keystrokes through parseTypedAmount + the predicate so single submits clear and double submits fire as expected. --- .../folio-submit-balance-predicate.test.ts | 53 ++++++++++++++++++- 1 file changed, 52 insertions(+), 1 deletion(-) diff --git a/pkg/spec/test/folio-submit-balance-predicate.test.ts b/pkg/spec/test/folio-submit-balance-predicate.test.ts index b3cb5e0..d676d6c 100644 --- a/pkg/spec/test/folio-submit-balance-predicate.test.ts +++ b/pkg/spec/test/folio-submit-balance-predicate.test.ts @@ -1,7 +1,10 @@ import assert from "node:assert/strict"; import { test } from "node:test"; -import { submitChangesBalanceByTypedAmount } from "../../../examples/folio/sanderling/predicates.ts"; +import { + parseTypedAmount, + submitChangesBalanceByTypedAmount, +} from "../../../examples/folio/sanderling/predicates.ts"; const submitOn = "testTag:LedgerScreen > testTag:TxnSubmit"; @@ -112,3 +115,51 @@ test("selector as object without TxnSubmit: vacuous true", () => { true, ); }); + +test("raw whole-dollar input: single submit clears", () => { + assert.equal( + submitChangesBalanceByTypedAmount({ + lastAction: { kind: "Tap", on: submitOn }, + typedAmount: parseTypedAmount("50"), + prevTotalBalance: 5000, + currTotalBalance: 10000, + }), + true, + ); +}); + +test("raw whole-dollar input: double submit fires", () => { + assert.equal( + submitChangesBalanceByTypedAmount({ + lastAction: { kind: "Tap", on: submitOn }, + typedAmount: parseTypedAmount("50"), + prevTotalBalance: 5000, + currTotalBalance: 15000, + }), + false, + ); +}); + +test("decimal input from empty prior balance clears", () => { + assert.equal( + submitChangesBalanceByTypedAmount({ + lastAction: { kind: "Tap", on: submitOn }, + typedAmount: parseTypedAmount("5.50"), + prevTotalBalance: 0, + currTotalBalance: 550, + }), + true, + ); +}); + +test("DoubleTap kind with raw whole-dollar input fires", () => { + assert.equal( + submitChangesBalanceByTypedAmount({ + lastAction: { kind: "DoubleTap", on: submitOn }, + typedAmount: parseTypedAmount("100"), + prevTotalBalance: 0, + currTotalBalance: 20000, + }), + false, + ); +});