@@ -58,6 +58,50 @@ func TestLedgerCreditTransactionLoaderDoesNotRetainHasMoreAfterHiddenFinalPage(t
5858 require .NotNil (t , fakeLedger .inputs [1 ].Cursor )
5959}
6060
61+ func TestLedgerCreditTransactionLoaderScansPastHiddenRowsUntilLimit (t * testing.T ) {
62+ now := time .Date (2026 , 7 , 9 , 12 , 0 , 0 , 0 , time .UTC )
63+ hidden := ledgerLoaderTestTransaction (t , "tx-hidden" , now .Add (- time .Minute ), models.Annotations {
64+ creditvoid .AnnotationCreditVoidRecordID : "void-record-1" ,
65+ }, ledger .AccountTypeCustomerReceivable )
66+ visibleA := ledgerLoaderTestTransaction (t , "tx-visible-a" , now .Add (- 2 * time .Minute ), nil , ledger .AccountTypeCustomerAccrued )
67+ visibleB := ledgerLoaderTestTransaction (t , "tx-visible-b" , now .Add (- 3 * time .Minute ), nil , ledger .AccountTypeCustomerAccrued )
68+
69+ next := hidden .Cursor ()
70+ fakeLedger := & ledgerLoaderFakeLedger {
71+ pages : []ledger.ListTransactionsResult {
72+ {
73+ Items : []ledger.Transaction {hidden },
74+ NextCursor : & next ,
75+ },
76+ {
77+ Items : []ledger.Transaction {visibleA , visibleB },
78+ },
79+ },
80+ }
81+
82+ loader := newLedgerCreditTransactionLoader (
83+ & service {Ledger : fakeLedger },
84+ ledger .ListTransactionsCreditMovementNegative ,
85+ )
86+
87+ currency := currencyx .Code ("USD" )
88+ got , err := loader .Load (t .Context (), creditTransactionLoaderInput {
89+ Limit : 2 ,
90+ CustomerID : customer.CustomerID {Namespace : "ns" , ID : "customer-id" },
91+ AccountID : "fbo-account" ,
92+ Currency : & currency ,
93+ AsOf : now ,
94+ })
95+ require .NoError (t , err )
96+ require .False (t , got .HasMore )
97+ require .Len (t , got .Items , 2 )
98+ require .Equal (t , "tx-visible-a" , got .Items [0 ].ID .ID )
99+ require .Equal (t , "tx-visible-b" , got .Items [1 ].ID .ID )
100+ require .Len (t , fakeLedger .inputs , 2 )
101+ require .Equal (t , 3 , fakeLedger .inputs [0 ].Limit )
102+ require .NotNil (t , fakeLedger .inputs [1 ].Cursor )
103+ }
104+
61105type ledgerLoaderFakeLedger struct {
62106 pages []ledger.ListTransactionsResult
63107 inputs []ledger.ListTransactionsInput
0 commit comments