@@ -506,7 +506,7 @@ func TestCheckDuplicates(t *testing.T) {
506506 },
507507 }
508508
509- result , err := imp .CheckDuplicates (context .TODO (), requests )
509+ result , err := imp .CheckDuplicates (context .TODO (), requests , false )
510510 assert .NoError (t , err )
511511 assert .Len (t , result , 2 )
512512 assert .Equal (t , "Transaction 1" , result [0 ].CreateRequest .Title )
@@ -530,7 +530,7 @@ func TestCheckDuplicates(t *testing.T) {
530530 },
531531 }
532532
533- result , err := imp .CheckDuplicates (context .TODO (), requests )
533+ result , err := imp .CheckDuplicates (context .TODO (), requests , false )
534534 assert .Error (t , err )
535535 assert .Nil (t , result )
536536 assert .Contains (t , err .Error (), "all transactions must have at least one reference number for deduplication" )
@@ -551,7 +551,7 @@ func TestCheckDuplicates(t *testing.T) {
551551 },
552552 }
553553
554- result , err := imp .CheckDuplicates (context .TODO (), requests )
554+ result , err := imp .CheckDuplicates (context .TODO (), requests , false )
555555 assert .Error (t , err )
556556 assert .Nil (t , result )
557557 assert .Contains (t , err .Error (), "all transactions must have at least one reference number for deduplication" )
@@ -572,7 +572,7 @@ func TestCheckDuplicates(t *testing.T) {
572572 },
573573 }
574574
575- result , err := imp .CheckDuplicates (context .TODO (), requests )
575+ result , err := imp .CheckDuplicates (context .TODO (), requests , false )
576576 assert .Error (t , err )
577577 assert .Nil (t , result )
578578 assert .Contains (t , err .Error (), "all transactions must have at least one reference number for deduplication" )
@@ -597,12 +597,43 @@ func TestCheckDuplicates(t *testing.T) {
597597 },
598598 }
599599
600- result , err := imp .CheckDuplicates (context .TODO (), requests )
600+ result , err := imp .CheckDuplicates (context .TODO (), requests , false )
601601 assert .Error (t , err )
602602 assert .Nil (t , result )
603603 assert .Contains (t , err .Error (), "duplicate reference number found in import data: ref=ref_duplicate" )
604604 })
605605
606+ t .Run ("skip duplicate reference check adds suffix" , func (t * testing.T ) {
607+ ctrl := gomock .NewController (t )
608+ defer ctrl .Finish ()
609+
610+ impl := NewMockImplementation (ctrl )
611+ impl .EXPECT ().Type ().Return (importv1 .ImportSource_IMPORT_SOURCE_FIREFLY )
612+ imp := importers .NewImporter (& importers.ImporterConfig {}, impl )
613+
614+ requests := []* transactionsv1.CreateTransactionRequest {
615+ {
616+ Title : "Transaction 1" ,
617+ InternalReferenceNumbers : []string {"ref_duplicate" },
618+ },
619+ {
620+ Title : "Transaction 2" ,
621+ InternalReferenceNumbers : []string {"ref_duplicate" },
622+ },
623+ {
624+ Title : "Transaction 3" ,
625+ InternalReferenceNumbers : []string {"ref_duplicate" },
626+ },
627+ }
628+
629+ result , err := imp .CheckDuplicates (context .TODO (), requests , true )
630+ assert .NoError (t , err )
631+ assert .Len (t , result , 3 )
632+ assert .Equal (t , []string {"ref_duplicate" }, result [0 ].CreateRequest .InternalReferenceNumbers )
633+ assert .Equal (t , []string {"ref_duplicate_1" }, result [1 ].CreateRequest .InternalReferenceNumbers )
634+ assert .Equal (t , []string {"ref_duplicate_2" }, result [2 ].CreateRequest .InternalReferenceNumbers )
635+ })
636+
606637 t .Run ("db error on check" , func (t * testing.T ) {
607638 ctrl := gomock .NewController (t )
608639 defer ctrl .Finish ()
@@ -625,7 +656,7 @@ func TestCheckDuplicates(t *testing.T) {
625656 },
626657 }
627658
628- result , err := imp .CheckDuplicates (ctx , requests )
659+ result , err := imp .CheckDuplicates (ctx , requests , false )
629660 assert .Error (t , err )
630661 assert .Nil (t , result )
631662 assert .Contains (t , err .Error (), "failed to check existing transactions" )
0 commit comments