123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533 |
- package monc
- import (
- "context"
- "errors"
- "sync/atomic"
- "testing"
- "github.com/alicebob/miniredis/v2"
- "github.com/stretchr/testify/assert"
- "github.com/zeromicro/go-zero/core/stores/cache"
- "github.com/zeromicro/go-zero/core/stores/mon"
- "github.com/zeromicro/go-zero/core/stores/redis"
- "go.mongodb.org/mongo-driver/bson"
- "go.mongodb.org/mongo-driver/mongo/integration/mtest"
- )
- func TestNewModel(t *testing.T) {
- mt := mtest.New(t, mtest.NewOptions().ClientType(mtest.Mock))
- mt.Run("test", func(mt *mtest.T) {
- _, err := newModel("foo", mt.DB.Name(), mt.Coll.Name(), nil)
- assert.NotNil(mt, err)
- })
- }
- func TestModel_DelCache(t *testing.T) {
- mt := mtest.New(t, mtest.NewOptions().ClientType(mtest.Mock))
- mt.Run("test", func(mt *mtest.T) {
- m := createModel(t, mt)
- assert.Nil(t, m.cache.Set("foo", "bar"))
- assert.Nil(t, m.cache.Set("bar", "baz"))
- assert.Nil(t, m.DelCache(context.Background(), "foo", "bar"))
- var v string
- assert.True(t, m.cache.IsNotFound(m.cache.Get("foo", &v)))
- assert.True(t, m.cache.IsNotFound(m.cache.Get("bar", &v)))
- })
- }
- func TestModel_DeleteOne(t *testing.T) {
- mt := mtest.New(t, mtest.NewOptions().ClientType(mtest.Mock))
- mt.Run("test", func(mt *mtest.T) {
- mt.AddMockResponses(mtest.CreateSuccessResponse(bson.D{{Key: "n", Value: 1}}...))
- m := createModel(t, mt)
- assert.Nil(t, m.cache.Set("foo", "bar"))
- val, err := m.DeleteOne(context.Background(), "foo", bson.D{{Key: "foo", Value: "bar"}})
- assert.Nil(t, err)
- assert.Equal(t, int64(1), val)
- var v string
- assert.True(t, m.cache.IsNotFound(m.cache.Get("foo", &v)))
- _, err = m.DeleteOne(context.Background(), "foo", bson.D{{Key: "foo", Value: "bar"}})
- assert.NotNil(t, err)
- m.cache = mockedCache{m.cache}
- mt.AddMockResponses(mtest.CreateSuccessResponse(bson.D{{Key: "n", Value: 1}}...))
- _, err = m.DeleteOne(context.Background(), "foo", bson.D{{Key: "foo", Value: "bar"}})
- assert.Equal(t, errMocked, err)
- })
- }
- func TestModel_DeleteOneNoCache(t *testing.T) {
- mt := mtest.New(t, mtest.NewOptions().ClientType(mtest.Mock))
- mt.Run("test", func(mt *mtest.T) {
- mt.AddMockResponses(mtest.CreateSuccessResponse(bson.D{{Key: "n", Value: 1}}...))
- m := createModel(t, mt)
- assert.Nil(t, m.cache.Set("foo", "bar"))
- val, err := m.DeleteOneNoCache(context.Background(), bson.D{{Key: "foo", Value: "bar"}})
- assert.Nil(t, err)
- assert.Equal(t, int64(1), val)
- var v string
- assert.Nil(t, m.cache.Get("foo", &v))
- })
- }
- func TestModel_FindOne(t *testing.T) {
- mt := mtest.New(t, mtest.NewOptions().ClientType(mtest.Mock))
- mt.Run("test", func(mt *mtest.T) {
- resp := mtest.CreateCursorResponse(
- 1,
- "DBName.CollectionName",
- mtest.FirstBatch,
- bson.D{
- {Key: "foo", Value: "bar"},
- })
- mt.AddMockResponses(resp)
- m := createModel(t, mt)
- var v struct {
- Foo string `bson:"foo"`
- }
- assert.Nil(t, m.FindOne(context.Background(), "foo", &v, bson.D{}))
- assert.Equal(t, "bar", v.Foo)
- assert.Nil(t, m.cache.Set("foo", "bar"))
- })
- }
- func TestModel_FindOneNoCache(t *testing.T) {
- mt := mtest.New(t, mtest.NewOptions().ClientType(mtest.Mock))
- mt.Run("test", func(mt *mtest.T) {
- resp := mtest.CreateCursorResponse(
- 1,
- "DBName.CollectionName",
- mtest.FirstBatch,
- bson.D{
- {Key: "foo", Value: "bar"},
- })
- mt.AddMockResponses(resp)
- m := createModel(t, mt)
- v := struct {
- Foo string `bson:"foo"`
- }{}
- assert.Nil(t, m.FindOneNoCache(context.Background(), &v, bson.D{}))
- assert.Equal(t, "bar", v.Foo)
- })
- }
- func TestModel_FindOneAndDelete(t *testing.T) {
- mt := mtest.New(t, mtest.NewOptions().ClientType(mtest.Mock))
- mt.Run("test", func(mt *mtest.T) {
- mt.AddMockResponses(mtest.CreateSuccessResponse(bson.D{
- {Key: "value", Value: bson.D{{Key: "foo", Value: "bar"}}},
- }...))
- m := createModel(t, mt)
- assert.Nil(t, m.cache.Set("foo", "bar"))
- v := struct {
- Foo string `bson:"foo"`
- }{}
- assert.Nil(t, m.FindOneAndDelete(context.Background(), "foo", &v, bson.D{}))
- assert.Equal(t, "bar", v.Foo)
- assert.True(t, m.cache.IsNotFound(m.cache.Get("foo", &v)))
- assert.NotNil(t, m.FindOneAndDelete(context.Background(), "foo", &v, bson.D{}))
- m.cache = mockedCache{m.cache}
- mt.AddMockResponses(mtest.CreateSuccessResponse(bson.D{
- {Key: "value", Value: bson.D{{Key: "foo", Value: "bar"}}},
- }...))
- assert.Equal(t, errMocked, m.FindOneAndDelete(context.Background(), "foo", &v, bson.D{}))
- })
- }
- func TestModel_FindOneAndDeleteNoCache(t *testing.T) {
- mt := mtest.New(t, mtest.NewOptions().ClientType(mtest.Mock))
- mt.Run("test", func(mt *mtest.T) {
- mt.AddMockResponses(mtest.CreateSuccessResponse(bson.D{
- {Key: "value", Value: bson.D{{Key: "foo", Value: "bar"}}},
- }...))
- m := createModel(t, mt)
- v := struct {
- Foo string `bson:"foo"`
- }{}
- assert.Nil(t, m.FindOneAndDeleteNoCache(context.Background(), &v, bson.D{}))
- assert.Equal(t, "bar", v.Foo)
- })
- }
- func TestModel_FindOneAndReplace(t *testing.T) {
- mt := mtest.New(t, mtest.NewOptions().ClientType(mtest.Mock))
- mt.Run("test", func(mt *mtest.T) {
- mt.AddMockResponses(mtest.CreateSuccessResponse(bson.D{
- {Key: "value", Value: bson.D{{Key: "foo", Value: "bar"}}},
- }...))
- m := createModel(t, mt)
- assert.Nil(t, m.cache.Set("foo", "bar"))
- v := struct {
- Foo string `bson:"foo"`
- }{}
- assert.Nil(t, m.FindOneAndReplace(context.Background(), "foo", &v, bson.D{}, bson.D{
- {Key: "name", Value: "Mary"},
- }))
- assert.Equal(t, "bar", v.Foo)
- assert.True(t, m.cache.IsNotFound(m.cache.Get("foo", &v)))
- assert.NotNil(t, m.FindOneAndReplace(context.Background(), "foo", &v, bson.D{}, bson.D{
- {Key: "name", Value: "Mary"},
- }))
- m.cache = mockedCache{m.cache}
- mt.AddMockResponses(mtest.CreateSuccessResponse(bson.D{
- {Key: "value", Value: bson.D{{Key: "foo", Value: "bar"}}},
- }...))
- assert.Equal(t, errMocked, m.FindOneAndReplace(context.Background(), "foo", &v, bson.D{}, bson.D{
- {Key: "name", Value: "Mary"},
- }))
- })
- }
- func TestModel_FindOneAndReplaceNoCache(t *testing.T) {
- mt := mtest.New(t, mtest.NewOptions().ClientType(mtest.Mock))
- mt.Run("test", func(mt *mtest.T) {
- mt.AddMockResponses(mtest.CreateSuccessResponse(bson.D{
- {Key: "value", Value: bson.D{{Key: "foo", Value: "bar"}}},
- }...))
- m := createModel(t, mt)
- v := struct {
- Foo string `bson:"foo"`
- }{}
- assert.Nil(t, m.FindOneAndReplaceNoCache(context.Background(), &v, bson.D{}, bson.D{
- {Key: "name", Value: "Mary"},
- }))
- assert.Equal(t, "bar", v.Foo)
- })
- }
- func TestModel_FindOneAndUpdate(t *testing.T) {
- mt := mtest.New(t, mtest.NewOptions().ClientType(mtest.Mock))
- mt.Run("test", func(mt *mtest.T) {
- mt.AddMockResponses(mtest.CreateSuccessResponse(bson.D{
- {Key: "value", Value: bson.D{{Key: "foo", Value: "bar"}}},
- }...))
- m := createModel(t, mt)
- assert.Nil(t, m.cache.Set("foo", "bar"))
- v := struct {
- Foo string `bson:"foo"`
- }{}
- assert.Nil(t, m.FindOneAndUpdate(context.Background(), "foo", &v, bson.D{}, bson.D{
- {Key: "$set", Value: bson.D{{Key: "name", Value: "Mary"}}},
- }))
- assert.Equal(t, "bar", v.Foo)
- assert.True(t, m.cache.IsNotFound(m.cache.Get("foo", &v)))
- assert.NotNil(t, m.FindOneAndUpdate(context.Background(), "foo", &v, bson.D{}, bson.D{
- {Key: "$set", Value: bson.D{{Key: "name", Value: "Mary"}}},
- }))
- m.cache = mockedCache{m.cache}
- mt.AddMockResponses(mtest.CreateSuccessResponse(bson.D{
- {Key: "value", Value: bson.D{{Key: "foo", Value: "bar"}}},
- }...))
- assert.Equal(t, errMocked, m.FindOneAndUpdate(context.Background(), "foo", &v, bson.D{}, bson.D{
- {Key: "$set", Value: bson.D{{Key: "name", Value: "Mary"}}},
- }))
- })
- }
- func TestModel_FindOneAndUpdateNoCache(t *testing.T) {
- mt := mtest.New(t, mtest.NewOptions().ClientType(mtest.Mock))
- mt.Run("test", func(mt *mtest.T) {
- mt.AddMockResponses(mtest.CreateSuccessResponse(bson.D{
- {Key: "value", Value: bson.D{{Key: "foo", Value: "bar"}}},
- }...))
- m := createModel(t, mt)
- v := struct {
- Foo string `bson:"foo"`
- }{}
- assert.Nil(t, m.FindOneAndUpdateNoCache(context.Background(), &v, bson.D{}, bson.D{
- {Key: "$set", Value: bson.D{{Key: "name", Value: "Mary"}}},
- }))
- assert.Equal(t, "bar", v.Foo)
- })
- }
- func TestModel_GetCache(t *testing.T) {
- mt := mtest.New(t, mtest.NewOptions().ClientType(mtest.Mock))
- mt.Run("test", func(mt *mtest.T) {
- m := createModel(t, mt)
- assert.NotNil(t, m.cache)
- assert.Nil(t, m.cache.Set("foo", "bar"))
- var s string
- assert.Nil(t, m.cache.Get("foo", &s))
- assert.Equal(t, "bar", s)
- })
- }
- func TestModel_InsertOne(t *testing.T) {
- mt := mtest.New(t, mtest.NewOptions().ClientType(mtest.Mock))
- mt.Run("test", func(mt *mtest.T) {
- mt.AddMockResponses(mtest.CreateSuccessResponse(bson.D{
- {Key: "value", Value: bson.D{{Key: "foo", Value: "bar"}}},
- }...))
- m := createModel(t, mt)
- assert.Nil(t, m.cache.Set("foo", "bar"))
- resp, err := m.InsertOne(context.Background(), "foo", bson.D{
- {Key: "name", Value: "Mary"},
- })
- assert.Nil(t, err)
- assert.NotNil(t, resp)
- var v string
- assert.True(t, m.cache.IsNotFound(m.cache.Get("foo", &v)))
- _, err = m.InsertOne(context.Background(), "foo", bson.D{
- {Key: "name", Value: "Mary"},
- })
- assert.NotNil(t, err)
- m.cache = mockedCache{m.cache}
- mt.AddMockResponses(mtest.CreateSuccessResponse(bson.D{
- {Key: "value", Value: bson.D{{Key: "foo", Value: "bar"}}},
- }...))
- _, err = m.InsertOne(context.Background(), "foo", bson.D{
- {Key: "name", Value: "Mary"},
- })
- assert.Equal(t, errMocked, err)
- })
- }
- func TestModel_InsertOneNoCache(t *testing.T) {
- mt := mtest.New(t, mtest.NewOptions().ClientType(mtest.Mock))
- mt.Run("test", func(mt *mtest.T) {
- mt.AddMockResponses(mtest.CreateSuccessResponse(bson.D{
- {Key: "value", Value: bson.D{{Key: "foo", Value: "bar"}}},
- }...))
- m := createModel(t, mt)
- resp, err := m.InsertOneNoCache(context.Background(), bson.D{
- {Key: "name", Value: "Mary"},
- })
- assert.Nil(t, err)
- assert.NotNil(t, resp)
- })
- }
- func TestModel_ReplaceOne(t *testing.T) {
- mt := mtest.New(t, mtest.NewOptions().ClientType(mtest.Mock))
- mt.Run("test", func(mt *mtest.T) {
- mt.AddMockResponses(mtest.CreateSuccessResponse(bson.D{
- {Key: "value", Value: bson.D{{Key: "foo", Value: "bar"}}},
- }...))
- m := createModel(t, mt)
- assert.Nil(t, m.cache.Set("foo", "bar"))
- resp, err := m.ReplaceOne(context.Background(), "foo", bson.D{}, bson.D{
- {Key: "foo", Value: "baz"},
- })
- assert.Nil(t, err)
- assert.NotNil(t, resp)
- var v string
- assert.True(t, m.cache.IsNotFound(m.cache.Get("foo", &v)))
- _, err = m.ReplaceOne(context.Background(), "foo", bson.D{}, bson.D{
- {Key: "foo", Value: "baz"},
- })
- assert.NotNil(t, err)
- m.cache = mockedCache{m.cache}
- mt.AddMockResponses(mtest.CreateSuccessResponse(bson.D{
- {Key: "value", Value: bson.D{{Key: "foo", Value: "bar"}}},
- }...))
- _, err = m.ReplaceOne(context.Background(), "foo", bson.D{}, bson.D{
- {Key: "foo", Value: "baz"},
- })
- assert.Equal(t, errMocked, err)
- })
- }
- func TestModel_ReplaceOneNoCache(t *testing.T) {
- mt := mtest.New(t, mtest.NewOptions().ClientType(mtest.Mock))
- mt.Run("test", func(mt *mtest.T) {
- mt.AddMockResponses(mtest.CreateSuccessResponse(bson.D{
- {Key: "value", Value: bson.D{{Key: "foo", Value: "bar"}}},
- }...))
- m := createModel(t, mt)
- resp, err := m.ReplaceOneNoCache(context.Background(), bson.D{}, bson.D{
- {Key: "foo", Value: "baz"},
- })
- assert.Nil(t, err)
- assert.NotNil(t, resp)
- })
- }
- func TestModel_SetCache(t *testing.T) {
- mt := mtest.New(t, mtest.NewOptions().ClientType(mtest.Mock))
- mt.Run("test", func(mt *mtest.T) {
- m := createModel(t, mt)
- assert.Nil(t, m.SetCache("foo", "bar"))
- var v string
- assert.Nil(t, m.GetCache("foo", &v))
- assert.Equal(t, "bar", v)
- })
- }
- func TestModel_UpdateByID(t *testing.T) {
- mt := mtest.New(t, mtest.NewOptions().ClientType(mtest.Mock))
- mt.Run("test", func(mt *mtest.T) {
- mt.AddMockResponses(mtest.CreateSuccessResponse(bson.D{
- {Key: "value", Value: bson.D{{Key: "foo", Value: "bar"}}},
- }...))
- m := createModel(t, mt)
- assert.Nil(t, m.cache.Set("foo", "bar"))
- resp, err := m.UpdateByID(context.Background(), "foo", bson.D{}, bson.D{
- {Key: "$set", Value: bson.D{{Key: "foo", Value: "baz"}}},
- })
- assert.Nil(t, err)
- assert.NotNil(t, resp)
- var v string
- assert.True(t, m.cache.IsNotFound(m.cache.Get("foo", &v)))
- _, err = m.UpdateByID(context.Background(), "foo", bson.D{}, bson.D{
- {Key: "$set", Value: bson.D{{Key: "foo", Value: "baz"}}},
- })
- assert.NotNil(t, err)
- m.cache = mockedCache{m.cache}
- mt.AddMockResponses(mtest.CreateSuccessResponse(bson.D{
- {Key: "value", Value: bson.D{{Key: "foo", Value: "bar"}}},
- }...))
- _, err = m.UpdateByID(context.Background(), "foo", bson.D{}, bson.D{
- {Key: "$set", Value: bson.D{{Key: "foo", Value: "baz"}}},
- })
- assert.Equal(t, errMocked, err)
- })
- }
- func TestModel_UpdateByIDNoCache(t *testing.T) {
- mt := mtest.New(t, mtest.NewOptions().ClientType(mtest.Mock))
- mt.Run("test", func(mt *mtest.T) {
- mt.AddMockResponses(mtest.CreateSuccessResponse(bson.D{
- {Key: "value", Value: bson.D{{Key: "foo", Value: "bar"}}},
- }...))
- m := createModel(t, mt)
- resp, err := m.UpdateByIDNoCache(context.Background(), bson.D{}, bson.D{
- {Key: "$set", Value: bson.D{{Key: "foo", Value: "baz"}}},
- })
- assert.Nil(t, err)
- assert.NotNil(t, resp)
- })
- }
- func TestModel_UpdateMany(t *testing.T) {
- mt := mtest.New(t, mtest.NewOptions().ClientType(mtest.Mock))
- mt.Run("test", func(mt *mtest.T) {
- mt.AddMockResponses(mtest.CreateSuccessResponse(bson.D{
- {Key: "value", Value: bson.D{{Key: "foo", Value: "bar"}}},
- }...))
- m := createModel(t, mt)
- assert.Nil(t, m.cache.Set("foo", "bar"))
- assert.Nil(t, m.cache.Set("bar", "baz"))
- resp, err := m.UpdateMany(context.Background(), []string{"foo", "bar"}, bson.D{}, bson.D{
- {Key: "$set", Value: bson.D{{Key: "foo", Value: "baz"}}},
- })
- assert.Nil(t, err)
- assert.NotNil(t, resp)
- var v string
- assert.True(t, m.cache.IsNotFound(m.cache.Get("foo", &v)))
- assert.True(t, m.cache.IsNotFound(m.cache.Get("bar", &v)))
- _, err = m.UpdateMany(context.Background(), []string{"foo", "bar"}, bson.D{}, bson.D{
- {Key: "$set", Value: bson.D{{Key: "foo", Value: "baz"}}},
- })
- assert.NotNil(t, err)
- m.cache = mockedCache{m.cache}
- mt.AddMockResponses(mtest.CreateSuccessResponse(bson.D{
- {Key: "value", Value: bson.D{{Key: "foo", Value: "bar"}}},
- }...))
- _, err = m.UpdateMany(context.Background(), []string{"foo", "bar"}, bson.D{}, bson.D{
- {Key: "$set", Value: bson.D{{Key: "foo", Value: "baz"}}},
- })
- assert.Equal(t, errMocked, err)
- })
- }
- func TestModel_UpdateManyNoCache(t *testing.T) {
- mt := mtest.New(t, mtest.NewOptions().ClientType(mtest.Mock))
- mt.Run("test", func(mt *mtest.T) {
- mt.AddMockResponses(mtest.CreateSuccessResponse(bson.D{
- {Key: "value", Value: bson.D{{Key: "foo", Value: "bar"}}},
- }...))
- m := createModel(t, mt)
- resp, err := m.UpdateManyNoCache(context.Background(), bson.D{}, bson.D{
- {Key: "$set", Value: bson.D{{Key: "foo", Value: "baz"}}},
- })
- assert.Nil(t, err)
- assert.NotNil(t, resp)
- })
- }
- func TestModel_UpdateOne(t *testing.T) {
- mt := mtest.New(t, mtest.NewOptions().ClientType(mtest.Mock))
- mt.Run("test", func(mt *mtest.T) {
- mt.AddMockResponses(mtest.CreateSuccessResponse(bson.D{
- {Key: "value", Value: bson.D{{Key: "foo", Value: "bar"}}},
- }...))
- m := createModel(t, mt)
- assert.Nil(t, m.cache.Set("foo", "bar"))
- resp, err := m.UpdateOne(context.Background(), "foo", bson.D{}, bson.D{
- {Key: "$set", Value: bson.D{{Key: "foo", Value: "baz"}}},
- })
- assert.Nil(t, err)
- assert.NotNil(t, resp)
- var v string
- assert.True(t, m.cache.IsNotFound(m.cache.Get("foo", &v)))
- _, err = m.UpdateOne(context.Background(), "foo", bson.D{}, bson.D{
- {Key: "$set", Value: bson.D{{Key: "foo", Value: "baz"}}},
- })
- assert.NotNil(t, err)
- mt.AddMockResponses(mtest.CreateSuccessResponse(bson.D{
- {Key: "value", Value: bson.D{{Key: "foo", Value: "bar"}}},
- }...))
- m.cache = mockedCache{m.cache}
- _, err = m.UpdateOne(context.Background(), "foo", bson.D{}, bson.D{
- {Key: "$set", Value: bson.D{{Key: "foo", Value: "baz"}}},
- })
- assert.Equal(t, errMocked, err)
- })
- }
- func TestModel_UpdateOneNoCache(t *testing.T) {
- mt := mtest.New(t, mtest.NewOptions().ClientType(mtest.Mock))
- mt.Run("test", func(mt *mtest.T) {
- mt.AddMockResponses(mtest.CreateSuccessResponse(bson.D{
- {Key: "value", Value: bson.D{{Key: "foo", Value: "bar"}}},
- }...))
- m := createModel(t, mt)
- resp, err := m.UpdateOneNoCache(context.Background(), bson.D{}, bson.D{
- {Key: "$set", Value: bson.D{{Key: "foo", Value: "baz"}}},
- })
- assert.Nil(t, err)
- assert.NotNil(t, resp)
- })
- }
- func createModel(t *testing.T, mt *mtest.T) *Model {
- s, err := miniredis.Run()
- assert.Nil(t, err)
- mon.Inject(mt.Name(), mt.Client)
- if atomic.AddInt32(&index, 1)%2 == 0 {
- return MustNewNodeModel(mt.Name(), mt.DB.Name(), mt.Coll.Name(), redis.New(s.Addr()))
- } else {
- return MustNewModel(mt.Name(), mt.DB.Name(), mt.Coll.Name(), cache.CacheConf{
- cache.NodeConf{
- RedisConf: redis.RedisConf{
- Host: s.Addr(),
- Type: redis.NodeType,
- },
- Weight: 100,
- },
- })
- }
- }
- var (
- errMocked = errors.New("mocked error")
- index int32
- )
- type mockedCache struct {
- cache.Cache
- }
- func (m mockedCache) DelCtx(_ context.Context, _ ...string) error {
- return errMocked
- }
|