diff options
| author | Pimyn Girgis <pimyn@google.com> | 2025-12-31 10:55:26 +0100 |
|---|---|---|
| committer | Aleksandr Nogikh <nogikh@google.com> | 2026-01-08 08:55:35 +0000 |
| commit | 06ac10d7e8f3efdc1393e5a7dda65f405d93afd4 (patch) | |
| tree | 545829f2fe64541f6230c8dbeda8c9add019f164 | |
| parent | c58cecdc85ba1bbd56a8c0aa39e0e03a34b0aba1 (diff) | |
syz-cluster: add tests for series and patch name filtering
Adds unit tests for the series and patch name filtering functionality in the database repository.
| -rw-r--r-- | syz-cluster/pkg/db/series_repo_test.go | 88 |
1 files changed, 88 insertions, 0 deletions
diff --git a/syz-cluster/pkg/db/series_repo_test.go b/syz-cluster/pkg/db/series_repo_test.go index 576d48b94..b6bc74ca6 100644 --- a/syz-cluster/pkg/db/series_repo_test.go +++ b/syz-cluster/pkg/db/series_repo_test.go @@ -174,6 +174,94 @@ func TestSeriesRepositoryList(t *testing.T) { }) } +// nolint: dupl +func TestSeriesRepositorySearch(t *testing.T) { + client, ctx := NewTransientDB(t) + repo := NewSeriesRepository(client) + + series1 := &Series{ + ExtID: "series-search-1", + Title: "Kernel Series for ARM64", + PublishedAt: time.Date(2020, time.January, 1, 1, 0, 0, 0, time.UTC), + } + patches1 := []*Patch{ + { + Title: "arm64: patch for CPU", + Seq: 1, + }, + { + Title: "arm64: another patch for memory", + Seq: 2, + }, + } + err := repo.Insert(ctx, series1, func() ([]*Patch, error) { + return patches1, nil + }) + assert.NoError(t, err) + + series2 := &Series{ + ExtID: "series-search-2", + Title: "X86 Specific Patch Series", + PublishedAt: time.Date(2020, time.January, 1, 2, 0, 0, 0, time.UTC), + } + patches2 := []*Patch{ + { + Title: "x86: new feature", + Seq: 1, + }, + } + err = repo.Insert(ctx, series2, func() ([]*Patch, error) { + return patches2, nil + }) + assert.NoError(t, err) + + series3 := &Series{ + ExtID: "series-search-3", + Title: "Generic Bug Fixes", + PublishedAt: time.Date(2020, time.January, 1, 3, 0, 0, 0, time.UTC), + } + patches3 := []*Patch{ + { + Title: "net: fix double free", + Seq: 1, + }, + } + err = repo.Insert(ctx, series3, func() ([]*Patch, error) { + return patches3, nil + }) + assert.NoError(t, err) + + t.Run("by_series_name", func(t *testing.T) { + list, err := repo.ListLatest(ctx, SeriesFilter{Name: "Kernel Series"}, time.Time{}) + assert.NoError(t, err) + assert.Len(t, list, 1) + assert.Equal(t, series1.Title, list[0].Series.Title) + }) + t.Run("by_patch_name", func(t *testing.T) { + list, err := repo.ListLatest(ctx, SeriesFilter{Name: "double free"}, time.Time{}) + assert.NoError(t, err) + assert.Len(t, list, 1) + assert.Equal(t, series3.Title, list[0].Series.Title) + }) + t.Run("no_match", func(t *testing.T) { + list, err := repo.ListLatest(ctx, SeriesFilter{Name: "nonexistent"}, time.Time{}) + assert.NoError(t, err) + assert.Len(t, list, 0) + }) + t.Run("empty_search_string", func(t *testing.T) { + list, err := repo.ListLatest(ctx, SeriesFilter{Name: ""}, time.Time{}) + assert.NoError(t, err) + assert.Len(t, list, 3) // All series should be returned if search strings are empty. + }) + t.Run("search_across_series_and_patch", func(t *testing.T) { + list, err := repo.ListLatest(ctx, SeriesFilter{Name: "patch"}, time.Time{}) + assert.NoError(t, err) + assert.Len(t, list, 2) + assert.Equal(t, series2.Title, list[0].Series.Title) + assert.Equal(t, series1.Title, list[1].Series.Title) + }) +} + func TestSeriesRepositoryUpdate(t *testing.T) { client, ctx := NewTransientDB(t) repo := NewSeriesRepository(client) |
