diff --git a/pkg/items/pagination.go b/pkg/items/pagination.go index c8c4bb16d2da0d2d10e3d98422aaf345ffbf7c21..73a5ae9ac8e3431e332b2c1de9b56c66c78fc503 100644 --- a/pkg/items/pagination.go +++ b/pkg/items/pagination.go @@ -27,33 +27,26 @@ func (b *BatchProcessor) getBatch(ctx context.Context) ([]*Item, bool, error) { var total int if b.FindPublishedOptions != nil { + opts := *b.FindPublishedOptions + opts.FindOptions = *options.New(b.processed, b.limit, b.sort...) res, total, err = b.Items.FindPublished( ctx, b.SpaceID, b.EnvID, b.CollectionID, b.Filter, - &FindPublishedOptions{ - Regular: b.FindPublishedOptions.Regular, - Hidden: b.FindPublishedOptions.Hidden, - Templates: b.FindPublishedOptions.Templates, - FindOptions: *options.New(b.processed, b.limit, b.sort...), - }, + &opts, ) } else { + opts := *b.FindOptions + opts.FindOptions = *options.New(b.processed, b.limit, b.sort...) res, total, err = b.Items.Find( ctx, b.SpaceID, b.EnvID, b.CollectionID, b.Filter, - &FindOptions{ - Deleted: b.FindOptions.Deleted, - Regular: b.FindOptions.Regular, - Hidden: b.FindOptions.Hidden, - Templates: b.FindOptions.Templates, - FindOptions: *options.New(b.processed, b.limit, b.sort...), - }, + &opts, ) } diff --git a/pkg/items/pagination_test.go b/pkg/items/pagination_test.go index 008b17795cc1c57d4e2dcf6bb3507bee8b3f1646..23d484b83e3e21ec3ee7b5f93477ea9d9a9b7cee 100644 --- a/pkg/items/pagination_test.go +++ b/pkg/items/pagination_test.go @@ -5,6 +5,7 @@ import ( "testing" "git.perx.ru/perxis/perxis-go/pkg/environments" + "git.perx.ru/perxis/perxis-go/pkg/errors" "git.perx.ru/perxis/perxis-go/pkg/options" "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" @@ -58,4 +59,39 @@ func TestBatchProcessor(t *testing.T) { require.NoError(t, err) assert.Equal(t, 1000/25, counter) }) + + t.Run("With FindOptions2", func(t *testing.T) { + + f := &FindOptions{ + Deleted: true, + Hidden: true, + Regular: true, + Templates: true, + TranslationsIDs: []string{"*"}, + LocaleID: "en", + } + + itemssvc := &Stub{ + FindResult: func(req StubFindRequest) StubFindResult { + fo := req.Options[0] + if !assert.Equal(t, f, fo) { + return StubFindResult{Items: nil, Total: 0, Error: errors.New("FindOptions not equal")} + } + return StubFindResult{Items: make([]*Item, fo.Limit), Total: 25, Error: nil} + }, + } + + f.FindOptions = *options.New(0, 25) + b := &BatchProcessor{ + Items: itemssvc, + SpaceID: "sp", + EnvID: environments.DefaultEnvironment, + CollectionID: "col", + FindOptions: f, + } + + var counter int + _, err := b.Do(context.Background(), func(batch []*Item) error { counter++; return nil }) + require.NoError(t, err) + }) }