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