diff options
| author | Paul Buetow <paul@buetow.org> | 2026-04-21 23:15:45 +0300 |
|---|---|---|
| committer | Paul Buetow <paul@buetow.org> | 2026-04-21 23:15:45 +0300 |
| commit | c6950b25e135d176ff26370a43ab54334704e12f (patch) | |
| tree | 9b1191ec04bc4bf0eacf95ca21bea107da1db007 | |
| parent | 3e99f5a75e14455aa75ca3a1dc7d08bd3e6f55fd (diff) | |
q7: preserve caller PerPage in best-match downloads
| -rw-r--r-- | internal/image/download.go | 4 | ||||
| -rw-r--r-- | internal/image/download_test.go | 19 |
2 files changed, 15 insertions, 8 deletions
diff --git a/internal/image/download.go b/internal/image/download.go index 42f733d..b5c80dd 100644 --- a/internal/image/download.go +++ b/internal/image/download.go @@ -131,7 +131,9 @@ func (d *Downloader) DownloadBestMatchWithOptions(ctx context.Context, opts *Sea } searchOpts := *opts - searchOpts.PerPage = 5 + if searchOpts.PerPage == 0 { + searchOpts.PerPage = 5 + } results, err := d.provider.Search(ctx, &searchOpts) if err != nil { diff --git a/internal/image/download_test.go b/internal/image/download_test.go index c636551..2033032 100644 --- a/internal/image/download_test.go +++ b/internal/image/download_test.go @@ -10,12 +10,13 @@ import ( ) type mockDownloaderProvider struct { - results []SearchResult - searchErr error - payload string - searchQueries []string - downloadURLs []string - getAttrCalls int + results []SearchResult + searchErr error + payload string + searchQueries []string + searchPerPages []int + downloadURLs []string + getAttrCalls int } func (m *mockDownloaderProvider) Name() string { return "mock" } @@ -23,6 +24,7 @@ func (m *mockDownloaderProvider) Name() string { return "mock" } func (m *mockDownloaderProvider) Search(_ context.Context, opts *SearchOptions) ([]SearchResult, error) { if opts != nil { m.searchQueries = append(m.searchQueries, opts.Query) + m.searchPerPages = append(m.searchPerPages, opts.PerPage) } if m.searchErr != nil { return nil, m.searchErr @@ -123,13 +125,16 @@ func TestDownloadBestMatchWithOptions(t *testing.T) { MaxSizeBytes: 10 * 1024 * 1024, }) - result, path, err := d.DownloadBestMatchWithOptions(context.Background(), &SearchOptions{Query: "ябълка"}) + result, path, err := d.DownloadBestMatchWithOptions(context.Background(), &SearchOptions{Query: "ябълка", PerPage: 3}) if err != nil { t.Fatalf("DownloadBestMatchWithOptions() error = %v", err) } if result == nil || result.ID != "1" { t.Fatalf("DownloadBestMatchWithOptions() result = %+v, want ID 1", result) } + if got, want := provider.searchPerPages, []int{3}; len(got) != len(want) || got[0] != want[0] { + t.Fatalf("provider search PerPage = %v, want %v", got, want) + } if !strings.HasSuffix(path, ".jpg") { t.Fatalf("DownloadBestMatchWithOptions() path = %q, want jpg suffix", path) } |
