diff --git a/pkg/items/dummy.go b/pkg/items/dummy.go deleted file mode 100644 index 206a0802b079efc08741dd54513a29d69f4c28a6..0000000000000000000000000000000000000000 --- a/pkg/items/dummy.go +++ /dev/null @@ -1,38 +0,0 @@ -package items - -import ( - "context" -) - -type FindResultDummy struct { - Items []*Item - Total int - Error error -} -type Dummy struct { - Items - FindResult *FindResultDummy -} - -func (d *Dummy) Find(_ context.Context, _, _, _ string, _ *Filter, _ ...*FindOptions) ([]*Item, int, error) { - return d.FindResult.Items, d.FindResult.Total, d.FindResult.Error -} - -type StubFindResult struct { - Total int -} - -type Stub struct { - Items - FindResult *StubFindResult -} - -func (d *Stub) Find(_ context.Context, _, _, _ string, _ *Filter, opts ...*FindOptions) ([]*Item, int, error) { - fo := MergeFindOptions(opts...) - return make([]*Item, fo.Limit), d.FindResult.Total, nil -} - -func (d *Stub) FindPublished(_ context.Context, _, _, _ string, _ *Filter, opts ...*FindPublishedOptions) ([]*Item, int, error) { - fo := MergeFindPublishedOptions(opts...) - return make([]*Item, fo.Limit), d.FindResult.Total, nil -} diff --git a/pkg/items/pagination_test.go b/pkg/items/pagination_test.go index c401b21f244325c9c242682c702284d197846677..008b17795cc1c57d4e2dcf6bb3507bee8b3f1646 100644 --- a/pkg/items/pagination_test.go +++ b/pkg/items/pagination_test.go @@ -12,7 +12,11 @@ import ( func TestBatchProcessor(t *testing.T) { t.Run("EmptyResults", func(t *testing.T) { - itemssvc := &Dummy{FindResult: &FindResultDummy{Items: nil, Total: 0, Error: nil}} + itemssvc := &Stub{ + FindResult: func(req StubFindRequest) StubFindResult { + return StubFindResult{Items: nil, Total: 0, Error: nil} + }, + } b := &BatchProcessor{ Items: itemssvc, @@ -35,7 +39,12 @@ func TestBatchProcessor(t *testing.T) { }) t.Run("With FindOptions", func(t *testing.T) { - itemssvc := &Stub{FindResult: &StubFindResult{Total: 1000}} + itemssvc := &Stub{ + FindResult: func(req StubFindRequest) StubFindResult { + fo := MergeFindOptions(req.Options...) + return StubFindResult{Items: make([]*Item, fo.Limit), Total: 1000, Error: nil} + }, + } b := &BatchProcessor{ Items: itemssvc, SpaceID: "sp", @@ -49,20 +58,4 @@ func TestBatchProcessor(t *testing.T) { require.NoError(t, err) assert.Equal(t, 1000/25, counter) }) - - t.Run("With FindPublishedOptions", func(t *testing.T) { - itemssvc := &Stub{FindResult: &StubFindResult{Total: 60}} - b := &BatchProcessor{ - Items: itemssvc, - SpaceID: "sp", - EnvID: environments.DefaultEnvironment, - CollectionID: "col", - FindPublishedOptions: &FindPublishedOptions{FindOptions: *options.New(0, 20)}, - } - - var counter int - _, err := b.Do(context.Background(), func(batch []*Item) error { counter++; return nil }) - require.NoError(t, err) - assert.Equal(t, 60/20, counter) - }) } diff --git a/pkg/items/stub.go b/pkg/items/stub.go new file mode 100644 index 0000000000000000000000000000000000000000..33573514b655a6084f636403a581bad46b130172 --- /dev/null +++ b/pkg/items/stub.go @@ -0,0 +1,35 @@ +package items + +import ( + "context" +) + +type StubFindRequest struct { + Context context.Context + SpaceID, EnvID, CollID string + Filter *Filter + Options []*FindOptions +} + +type StubFindResult struct { + Items []*Item + Total int + Error error +} + +type Stub struct { + Items + FindResult func(req StubFindRequest) StubFindResult +} + +func (d *Stub) Find(ctx context.Context, spaceID, envID, collID string, filter *Filter, opts ...*FindOptions) ([]*Item, int, error) { + res := d.FindResult(StubFindRequest{ + Context: ctx, + SpaceID: spaceID, + EnvID: envID, + CollID: collID, + Filter: filter, + Options: opts, + }) + return res.Items, res.Total, res.Error +}