summaryrefslogtreecommitdiff
path: root/internal
diff options
context:
space:
mode:
authorPaul Buetow <paul@buetow.org>2026-04-21 23:15:45 +0300
committerPaul Buetow <paul@buetow.org>2026-04-21 23:15:45 +0300
commitc6950b25e135d176ff26370a43ab54334704e12f (patch)
tree9b1191ec04bc4bf0eacf95ca21bea107da1db007 /internal
parent3e99f5a75e14455aa75ca3a1dc7d08bd3e6f55fd (diff)
q7: preserve caller PerPage in best-match downloads
Diffstat (limited to 'internal')
-rw-r--r--internal/image/download.go4
-rw-r--r--internal/image/download_test.go19
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)
}