From bd6dcbff10869d943806d1e696cb2907351b95b1 Mon Sep 17 00:00:00 2001 From: Danis Kirasirov <dbgbbu@gmail.com> Date: Mon, 19 Feb 2024 15:18:15 +0300 Subject: [PATCH] =?UTF-8?q?=D0=98=D1=81=D0=BF=D0=BE=D0=BB=D1=8C=D0=B7?= =?UTF-8?q?=D0=BE=D0=B2=D0=B0=D0=BD=D0=B8=D0=B5=20Stub=20=D0=B2=D0=BC?= =?UTF-8?q?=D0=B5=D1=81=D1=82=D0=BE=20Dummy?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- pkg/items/dummy.go | 38 ------------------------------------ pkg/items/pagination_test.go | 29 +++++++++++---------------- pkg/items/stub.go | 35 +++++++++++++++++++++++++++++++++ 3 files changed, 46 insertions(+), 56 deletions(-) delete mode 100644 pkg/items/dummy.go create mode 100644 pkg/items/stub.go diff --git a/pkg/items/dummy.go b/pkg/items/dummy.go deleted file mode 100644 index 206a0802..00000000 --- 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 c401b21f..008b1779 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 00000000..33573514 --- /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 +} -- GitLab