Skip to content
Snippets Groups Projects
Commit bd6dcbff authored by Danis Kirasirov's avatar Danis Kirasirov
Browse files

Использование Stub вместо Dummy

parent 1791c2bc
No related branches found
No related tags found
No related merge requests found
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
}
......@@ -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)
})
}
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
}
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment