40 lines
1.5 KiB
Go
40 lines
1.5 KiB
Go
package reconciliation
|
|
|
|
import (
|
|
"context"
|
|
"testing"
|
|
|
|
"gl/domain/ledger"
|
|
)
|
|
|
|
func TestCompareEvidenceReportsMissingDuplicateAndBlockchainMismatch(t *testing.T) {
|
|
journal := validJournal()
|
|
journal.Blockchain = ledger.BlockchainReference{Network: "kuknos", TransactionHash: "hash-1"}
|
|
matching := Evidence{SourceService: "wallet", SourceTransactionID: "t1", EventVersion: 1, BlockchainNetwork: "kuknos", TransactionHash: "hash-1"}
|
|
evidence := []Evidence{
|
|
matching,
|
|
matching,
|
|
{SourceService: "wallet", SourceTransactionID: "missing", EventVersion: 1},
|
|
{SourceService: "wallet", SourceTransactionID: "t1", EventVersion: 1, BlockchainNetwork: "kuknos", TransactionHash: "wrong"},
|
|
}
|
|
report, err := CompareEvidence(context.Background(), repositoryStub{pages: [][]ledger.Journal{{journal}}}, evidence, 10)
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
if report.Compared != 4 || len(report.Missing) != 1 || len(report.Duplicates) != 2 || len(report.Mismatched) != 0 {
|
|
t.Fatalf("unexpected report: %+v", report)
|
|
}
|
|
}
|
|
|
|
func TestCompareEvidenceReportsHashMismatch(t *testing.T) {
|
|
journal := validJournal()
|
|
journal.Blockchain.TransactionHash = "actual"
|
|
report, err := CompareEvidence(context.Background(), repositoryStub{pages: [][]ledger.Journal{{journal}}}, []Evidence{{SourceService: "wallet", SourceTransactionID: "t1", EventVersion: 1, TransactionHash: "expected"}}, 10)
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
if len(report.Mismatched) != 1 || report.Mismatched[0].Field != "transaction_hash" {
|
|
t.Fatalf("unexpected report: %+v", report)
|
|
}
|
|
}
|