From b19b9c71d17d85f8059f39d147ed8b0ff5dc864a Mon Sep 17 00:00:00 2001 From: asepharyana Date: Wed, 16 Sep 2026 14:32:54 +0700 Subject: [PATCH] test: universe save + local ticker search (ticker & company-name lookup) --- backend/internal/store/rows_extra_test.go | 48 +++++++++++++++++++++++ 1 file changed, 48 insertions(+) diff --git a/backend/internal/store/rows_extra_test.go b/backend/internal/store/rows_extra_test.go index 7354d8f..eecf514 100644 --- a/backend/internal/store/rows_extra_test.go +++ b/backend/internal/store/rows_extra_test.go @@ -107,3 +107,51 @@ func TestDestinationCRUD(t *testing.T) { t.Fatal("double delete must report false") } } + +// Universe save + local ticker search + company-name lookup. +func TestUniverseSearch(t *testing.T) { + db, err := Open(t.TempDir() + "/univ.db") + if err != nil { + t.Fatal(err) + } + defer db.Close() + uni := []UniverseRow{ + {Symbol: "BBCA.JK", Close: 100, Date: "2026-09-16", CompanyName: "PT Bank Central Asia Tbk"}, + {Symbol: "TLKM.JK", Close: 90, Date: "2026-09-16"}, + {Symbol: "BBRI.JK", Close: 80, Date: "2026-09-16", CompanyName: "PT Bank Rakyat Indonesia"}, + } + if err := db.SaveUniverse(uni); err != nil { + t.Fatal(err) + } + // Search by ticker prefix (case-insensitive). + hits, err := db.SearchTickers("bca", 10) + if err != nil { + t.Fatal(err) + } + if len(hits) != 1 || hits[0].Symbol != "BBCA" { + t.Fatalf("bca hits = %+v, want BBCA", hits) + } + // Search by company name. + hits, err = db.SearchTickers("bank", 10) + if err != nil { + t.Fatal(err) + } + if len(hits) != 2 { + t.Fatalf("bank hits = %d, want 2 (BBCA+BBRI by name)", len(hits)) + } + // .JK stripped on save, order by close desc. + if hits[0].Symbol != "BBCA" || hits[1].Symbol != "BBRI" { + t.Fatalf("bank order = %s,%s, want BBCA,BBRI", hits[0].Symbol, hits[1].Symbol) + } + // CompanyNames returns only tickers with stored names. + names, err := db.CompanyNames([]string{"BBCA", "TLKM", "BBRI"}) + if err != nil { + t.Fatal(err) + } + if names["BBCA"] != "PT Bank Central Asia Tbk" || names["BBRI"] != "PT Bank Rakyat Indonesia" { + t.Fatalf("names = %+v, want BBCA+BBRI only", names) + } + if _, ok := names["TLKM"]; ok { + t.Fatal("TLKM has no name, must be omitted") + } +}