From 1b40c1d74cf17aee2ee6e85f100dbfa68b8f6b07 Mon Sep 17 00:00:00 2001 From: Pavel Prokopenko Date: Thu, 16 Dec 2021 10:34:06 +0300 Subject: [PATCH 1/3] add support of ZUnionWithScores command --- client_test.go | 14 ++++++++++++++ cluster_test.go | 14 ++++++++++++++ expect.go | 1 + go.mod | 6 +++--- go.sum | 29 +++++++++++++++++++++++++++++ mock.go | 7 +++++++ 6 files changed, 68 insertions(+), 3 deletions(-) diff --git a/client_test.go b/client_test.go index a506486..aba1c9a 100644 --- a/client_test.go +++ b/client_test.go @@ -1986,6 +1986,20 @@ var _ = Describe("RedisMock", func() { }) }) + It("ZUnionWithScores", func() { + operationZSliceCmd(clientMock, func() *ExpectedZSlice { + return clientMock.ExpectZUnionWithScores(redis.ZStore{ + Keys: []string{"zset1", "zset2"}, + Weights: []float64{2, 3}, + }) + }, func() *redis.ZSliceCmd { + return client.ZUnionWithScores(ctx, redis.ZStore{ + Keys: []string{"zset1", "zset2"}, + Weights: []float64{2, 3}, + }) + }) + }) + It("ZUnionStore", func() { operationIntCmd(clientMock, func() *ExpectedInt { return clientMock.ExpectZUnionStore("out", &redis.ZStore{ diff --git a/cluster_test.go b/cluster_test.go index 0c9065d..19b1fa1 100644 --- a/cluster_test.go +++ b/cluster_test.go @@ -1985,6 +1985,20 @@ var _ = Describe("RedisMock", func() { }) }) + It("ZUnionWithScores", func() { + operationZSliceCmd(clusterMock, func() *ExpectedZSlice { + return clusterMock.ExpectZUnionWithScores(redis.ZStore{ + Keys: []string{"zset1", "zset2"}, + Weights: []float64{2, 3}, + }) + }, func() *redis.ZSliceCmd { + return client.ZUnionWithScores(ctx, redis.ZStore{ + Keys: []string{"zset1", "zset2"}, + Weights: []float64{2, 3}, + }) + }) + }) + It("ZUnionStore", func() { operationIntCmd(clusterMock, func() *ExpectedInt { return clusterMock.ExpectZUnionStore("out", &redis.ZStore{ diff --git a/expect.go b/expect.go index af81a47..2c7ccdc 100644 --- a/expect.go +++ b/expect.go @@ -207,6 +207,7 @@ type baseMock interface { ExpectZRevRangeByScoreWithScores(key string, opt *redis.ZRangeBy) *ExpectedZSlice ExpectZRevRank(key, member string) *ExpectedInt ExpectZScore(key, member string) *ExpectedFloat + ExpectZUnionWithScores(store redis.ZStore) *ExpectedZSlice ExpectZUnionStore(dest string, store *redis.ZStore) *ExpectedInt ExpectPFAdd(key string, els ...interface{}) *ExpectedInt diff --git a/go.mod b/go.mod index f937dfd..2e4b49c 100644 --- a/go.mod +++ b/go.mod @@ -3,7 +3,7 @@ module github.com/go-redis/redismock/v8 go 1.15 require ( - github.com/go-redis/redis/v8 v8.8.0 - github.com/onsi/ginkgo v1.15.0 - github.com/onsi/gomega v1.10.5 + github.com/go-redis/redis/v8 v8.11.4 + github.com/onsi/ginkgo v1.16.4 + github.com/onsi/gomega v1.16.0 ) diff --git a/go.sum b/go.sum index edaeab9..c24c44e 100644 --- a/go.sum +++ b/go.sum @@ -1,7 +1,10 @@ github.com/cespare/xxhash/v2 v2.1.1 h1:6MnRN8NT7+YBpUIWxHtefFZOKTAPgGjpQSxqLNn0+qY= github.com/cespare/xxhash/v2 v2.1.1/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= +github.com/cespare/xxhash/v2 v2.1.2 h1:YRXhKfTDauu4ajMg1TPgFO5jnlC2HCbmLXMcTG5cbYE= +github.com/cespare/xxhash/v2 v2.1.2/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= github.com/davecgh/go-spew v1.1.0 h1:ZDRjVQ15GmhC3fiQ8ni8+OwkZQO4DARzQgrnXU1Liz8= github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= +github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/dgryski/go-rendezvous v0.0.0-20200823014737-9f7001d12a5f h1:lO4WD4F/rVNCu3HqELle0jiPLLBs70cWOduZpkS1E78= github.com/dgryski/go-rendezvous v0.0.0-20200823014737-9f7001d12a5f/go.mod h1:cuUVRXasLTGF7a8hSLbxyZXjz+1KgoB3wDUb6vlszIc= github.com/fsnotify/fsnotify v1.4.7/go.mod h1:jwhsz4b93w/PPRr/qN1Yymfu8t87LnFCMoQvtojpjFo= @@ -9,6 +12,9 @@ github.com/fsnotify/fsnotify v1.4.9 h1:hsms1Qyu0jgnwNXIxa+/V/PDsU6CfLf6CNO8H7IWo github.com/fsnotify/fsnotify v1.4.9/go.mod h1:znqG4EE+3YCdAaPaxE2ZRY/06pZUdp0tY4IgpuI1SZQ= github.com/go-redis/redis/v8 v8.8.0 h1:fDZP58UN/1RD3DjtTXP/fFZ04TFohSYhjZDkcDe2dnw= github.com/go-redis/redis/v8 v8.8.0/go.mod h1:F7resOH5Kdug49Otu24RjHWwgK7u9AmtqWMnCV1iP5Y= +github.com/go-redis/redis/v8 v8.11.4 h1:kHoYkfZP6+pe04aFTnhDH6GDROa5yJdHJVNxV3F46Tg= +github.com/go-redis/redis/v8 v8.11.4/go.mod h1:2Z2wHZXdQpCDXEGzqMockDpNyYvi2l4Pxt6RJr792+w= +github.com/go-task/slim-sprig v0.0.0-20210107165309-348f09dbbbc0/go.mod h1:fyg7847qk6SyHyPtNmDHnmrv/HOrqktSC+C9fM+CJOE= github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U= github.com/golang/protobuf v1.4.0-rc.1/go.mod h1:ceaxUfeHdC40wWswd/P6IGgMaK3YpKi5j83Wpe3EHw8= github.com/golang/protobuf v1.4.0-rc.1.0.20200221234624-67d41d38c208/go.mod h1:xKAWHe0F5eneWXFV3EuXVDTCmh+JuBKY0li0aMyXATA= @@ -17,25 +23,35 @@ github.com/golang/protobuf v1.4.0-rc.4.0.20200313231945-b860323f09d0/go.mod h1:W github.com/golang/protobuf v1.4.0/go.mod h1:jodUvKwWbYaEsadDk5Fwe5c77LiNKVO9IDvqG2KuDX0= github.com/golang/protobuf v1.4.2 h1:+Z5KGCizgyZCbGh1KZqA0fcLLkwbsjIzS4aV2v7wJX0= github.com/golang/protobuf v1.4.2/go.mod h1:oDoupMAO8OvCJWAcko0GGGIgR6R6ocIYbsSw735rRwI= +github.com/golang/protobuf v1.5.0/go.mod h1:FsONVRAS9T7sI+LIUmWTfcYkHO4aIWwzhcaSAoJOfIk= +github.com/golang/protobuf v1.5.2/go.mod h1:XVQd3VNwM+JqD3oG2Ue2ip4fOMUkwXdXDdiuN0vRsmY= github.com/google/go-cmp v0.3.0/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= github.com/google/go-cmp v0.3.1/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU= github.com/google/go-cmp v0.4.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/google/go-cmp v0.5.5 h1:Khx7svrCpmxxtHBq5j2mp/xVjsi8hQMfNLvJFAlrGgU= github.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= +github.com/google/go-cmp v0.5.6/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE= github.com/hpcloud/tail v1.0.0/go.mod h1:ab1qPbhIpdTxEkNHXyeSf5vhxWSCs/tWer42PpOxQnU= github.com/nxadm/tail v1.4.4 h1:DQuhQpB1tVlglWS2hLQ5OV6B5r8aGxSrPc5Qo6uTN78= github.com/nxadm/tail v1.4.4/go.mod h1:kenIhsEOeOJmVchQTgglprH7qJGnHDVpk1VPCcaMI8A= +github.com/nxadm/tail v1.4.8 h1:nPr65rt6Y5JFSKQO7qToXr7pePgD6Gwiw05lkbyAQTE= +github.com/nxadm/tail v1.4.8/go.mod h1:+ncqLTQzXmGhMZNUePPaPqPvBxHAIsmXswZKocGu+AU= github.com/onsi/ginkgo v1.6.0/go.mod h1:lLunBs/Ym6LB5Z9jYTR76FiuTmxDTDusOGeTQH+WWjE= github.com/onsi/ginkgo v1.12.1/go.mod h1:zj2OWP4+oCPe1qIXoGWkgMRwljMUYCdkwsT2108oapk= github.com/onsi/ginkgo v1.15.0 h1:1V1NfVQR87RtWAgp1lv9JZJ5Jap+XFGKPi00andXGi4= github.com/onsi/ginkgo v1.15.0/go.mod h1:hF8qUzuuC8DJGygJH3726JnCZX4MYbRB8yFfISqnKUg= +github.com/onsi/ginkgo v1.16.4 h1:29JGrr5oVBm5ulCWet69zQkzWipVXIol6ygQUe/EzNc= +github.com/onsi/ginkgo v1.16.4/go.mod h1:dX+/inL/fNMqNlz0e9LfyB9TswhZpCVdJM/Z6Vvnwo0= github.com/onsi/gomega v1.7.1/go.mod h1:XdKZgCCFLUoM/7CFJVPcG8C1xQ1AJ0vpAezJrB7JYyY= github.com/onsi/gomega v1.10.1/go.mod h1:iN09h71vgCQne3DLsj+A5owkum+a2tYe+TOCB1ybHNo= github.com/onsi/gomega v1.10.5 h1:7n6FEkpFmfCoo2t+YYqXH0evK+a9ICQz0xcAy9dYcaQ= github.com/onsi/gomega v1.10.5/go.mod h1:gza4q3jKQJijlu05nKWRCW/GavJumGt8aNRxWg7mt48= +github.com/onsi/gomega v1.16.0 h1:6gjqkI8iiRHMvdccRJM8rVKjCWk6ZIm6FTm3ddIe4/c= +github.com/onsi/gomega v1.16.0/go.mod h1:HnhC7FXeEQY45zxNK3PPoIUhzk/80Xly9PcubAlGdZY= github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= +github.com/stretchr/testify v1.5.1/go.mod h1:5W2xD1RspED5o8YsWQXVCued0rvSQ+mT+I5cxcmMvtA= github.com/stretchr/testify v1.7.0 h1:nwc3DEeHmmLAfoZucVR881uASk0Mfjw8xYJ99tb5CcY= github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= @@ -58,6 +74,8 @@ golang.org/x/net v0.0.0-20200520004742-59133d7f0dd7/go.mod h1:qpuaurCH72eLCgpAm/ golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= golang.org/x/net v0.0.0-20201202161906-c7110b5ffcbb h1:eBmm0M9fYhWpKZLjQUUKka/LtIxf46G4fxeEz5KJr9U= golang.org/x/net v0.0.0-20201202161906-c7110b5ffcbb/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU= +golang.org/x/net v0.0.0-20210428140749-89ef3d95e781 h1:DzZ89McO9/gWPsQXS/FVKAlG02ZjaQ6AlZRBimEYOd0= +golang.org/x/net v0.0.0-20210428140749-89ef3d95e781/go.mod h1:OJAsFXCWl8Ukc7SiCT/9KSuxbyM7479/AVlXFRxuMCk= golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= @@ -69,11 +87,17 @@ golang.org/x/sys v0.0.0-20191005200804-aed5e4c7ecf9/go.mod h1:h1NjWce9XRLGQEsW7w golang.org/x/sys v0.0.0-20191120155948-bd437916bb0e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200323222414-85ca7c5b95cd/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210112080510-489259a85091 h1:DMyOG0U+gKfu8JZzg2UQe9MeaC1X+xQWlAKcRnjxjCw= golang.org/x/sys v0.0.0-20210112080510-489259a85091/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210423082822-04245dca01da h1:b3NXsE2LusjYGGjL5bxEVZZORm/YEFFrWFjR8eFrw/c= +golang.org/x/sys v0.0.0-20210423082822-04245dca01da/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.3 h1:cokOdA+Jmi5PJGXLlLllQSgYigAEfHXJAERHVMaCc2k= golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= +golang.org/x/text v0.3.6 h1:aRYxNxv6iGQlyVaZmk6ZgYEDa+Jg18DxebPSrd6bg1M= +golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20201224043029-2b0845dc783e/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= @@ -89,13 +113,18 @@ google.golang.org/protobuf v1.20.1-0.20200309200217-e05f789c0967/go.mod h1:A+miE google.golang.org/protobuf v1.21.0/go.mod h1:47Nbq4nVaFHyn7ilMalzfO3qCViNmqZ2kzikPIcrTAo= google.golang.org/protobuf v1.23.0 h1:4MY060fB1DLGMB/7MBTLnwQUY6+F09GEiz6SsrNqyzM= google.golang.org/protobuf v1.23.0/go.mod h1:EGpADcykh3NcUnDUJcl1+ZksZNG86OlYog2l/sGQquU= +google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp09yW+WbY/TyQbw= +google.golang.org/protobuf v1.26.0/go.mod h1:9q0QmTI4eRPtz6boOQmLYwt+qCgq0jsYwAQnmE0givc= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405 h1:yhCVgyC4o1eVCa2tZl7eS0r+SDo693bJlVdllGtEeKM= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/fsnotify.v1 v1.4.7/go.mod h1:Tz8NjZHkW78fSQdbUxIjBTcgA1z1m8ZHf0WmKUhAMys= gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7 h1:uRGJdciOHaEIrze2W8Q3AKkepLTh2hOroT7a+7czfdQ= gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7/go.mod h1:dt/ZhP58zS4L8KSrWDmTeBkI65Dw0HsyUHuEVlX15mw= +gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.2.4/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= gopkg.in/yaml.v2 v2.3.0 h1:clyUAQHOM3G0M3f5vQj7LuJrETvjVot3Z5el9nffUtU= gopkg.in/yaml.v2 v2.3.0/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= +gopkg.in/yaml.v2 v2.4.0 h1:D8xgwECY7CYvx+Y2n4sBz93Jn9JRvxdiyyo8CTfuKaY= +gopkg.in/yaml.v2 v2.4.0/go.mod h1:RDklbk79AGWmwhnvt/jBztapEOGDOx6ZbXqjP6csGnQ= gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c h1:dUUwHk2QECo/6vqA44rthZ8ie2QXMNeKRTHCNY2nXvo= gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= diff --git a/mock.go b/mock.go index cf6e351..4e143be 100644 --- a/mock.go +++ b/mock.go @@ -1619,6 +1619,13 @@ func (m *mock) ExpectZScore(key, member string) *ExpectedFloat { return e } +func (m *mock) ExpectZUnionWithScores(store redis.ZStore) *ExpectedZSlice { + e := &ExpectedZSlice{} + e.cmd = m.factory.ZUnionWithScores(m.ctx, store) + m.pushExpect(e) + return e +} + func (m *mock) ExpectZUnionStore(dest string, store *redis.ZStore) *ExpectedInt { e := &ExpectedInt{} e.cmd = m.factory.ZUnionStore(m.ctx, dest, store) From 30cc47e7df80f07ad65945a5d9d37027b616cf2c Mon Sep 17 00:00:00 2001 From: Pavel Prokopenko Date: Thu, 13 Jan 2022 14:42:47 +0200 Subject: [PATCH 2/3] add support of SetArgs command (#1) --- client_test.go | 12 ++++++++++++ cluster_test.go | 12 ++++++++++++ expect.go | 1 + mock.go | 7 +++++++ 4 files changed, 32 insertions(+) diff --git a/client_test.go b/client_test.go index aba1c9a..fdfc846 100644 --- a/client_test.go +++ b/client_test.go @@ -796,6 +796,18 @@ var _ = Describe("RedisMock", func() { }) }) + It("SetArgs", func() { + operationStatusCmd(clientMock, func() *ExpectedStatus { + return clientMock.ExpectSetArgs("key", "value", redis.SetArgs{ + Get: true, + }) + }, func() *redis.StatusCmd { + return client.SetArgs(ctx, "key", "value", redis.SetArgs{ + Get: true, + }) + }) + }) + It("SetEX", func() { operationStatusCmd(clientMock, func() *ExpectedStatus { return clientMock.ExpectSetEX("key", "value", 1*time.Minute) diff --git a/cluster_test.go b/cluster_test.go index 19b1fa1..0a1c2f4 100644 --- a/cluster_test.go +++ b/cluster_test.go @@ -795,6 +795,18 @@ var _ = Describe("RedisMock", func() { }) }) + It("SetArgs", func() { + operationStatusCmd(clusterMock, func() *ExpectedStatus { + return clusterMock.ExpectSetArgs("key", "value", redis.SetArgs{ + Get: true, + }) + }, func() *redis.StatusCmd { + return client.SetArgs(ctx, "key", "value", redis.SetArgs{ + Get: true, + }) + }) + }) + It("SetEX", func() { operationStatusCmd(clusterMock, func() *ExpectedStatus { return clusterMock.ExpectSetEX("key", "value", 1*time.Minute) diff --git a/expect.go b/expect.go index 2c7ccdc..9fa51b6 100644 --- a/expect.go +++ b/expect.go @@ -72,6 +72,7 @@ type baseMock interface { ExpectMSet(values ...interface{}) *ExpectedStatus ExpectMSetNX(values ...interface{}) *ExpectedBool ExpectSet(key string, value interface{}, expiration time.Duration) *ExpectedStatus + ExpectSetArgs(key string, value interface{}, a redis.SetArgs) *ExpectedStatus ExpectSetEX(key string, value interface{}, expiration time.Duration) *ExpectedStatus ExpectSetNX(key string, value interface{}, expiration time.Duration) *ExpectedBool ExpectSetXX(key string, value interface{}, expiration time.Duration) *ExpectedBool diff --git a/mock.go b/mock.go index 4e143be..a423b3d 100644 --- a/mock.go +++ b/mock.go @@ -723,6 +723,13 @@ func (m *mock) ExpectSet(key string, value interface{}, expiration time.Duration return e } +func (m *mock) ExpectSetArgs(key string, value interface{}, a redis.SetArgs) *ExpectedStatus { + e := &ExpectedStatus{} + e.cmd = m.factory.SetArgs(m.ctx, key, value, a) + m.pushExpect(e) + return e +} + func (m *mock) ExpectSetEX(key string, value interface{}, expiration time.Duration) *ExpectedStatus { e := &ExpectedStatus{} e.cmd = m.factory.SetEX(m.ctx, key, value, expiration) From c2d92a4b245cc513024f406d8b596093d90a89fd Mon Sep 17 00:00:00 2001 From: Pavel Prokopenko Date: Mon, 10 Oct 2022 16:04:55 +0300 Subject: [PATCH 3/3] add support of ZAddArgs command (#2) --- client_test.go | 22 ++++++++++++++++++++++ cluster_test.go | 22 ++++++++++++++++++++++ expect.go | 1 + mock.go | 9 +++++++++ 4 files changed, 54 insertions(+) diff --git a/client_test.go b/client_test.go index fdfc846..209784b 100644 --- a/client_test.go +++ b/client_test.go @@ -1670,6 +1670,28 @@ var _ = Describe("RedisMock", func() { }) }) + It("ZAddArgs", func() { + operationIntCmd(clientMock, func() *ExpectedInt { + return clientMock.ExpectZAddArgs("zset", redis.ZAddArgs{ + Members: []redis.Z{ + { + Member: "a", + Score: 1, + }, + }, + }) + }, func() *redis.IntCmd { + return client.ZAddArgs(ctx, "zset", redis.ZAddArgs{ + Members: []redis.Z{ + { + Member: "a", + Score: 1, + }, + }, + }) + }) + }) + It("ZAddNX", func() { operationIntCmd(clientMock, func() *ExpectedInt { return clientMock.ExpectZAddNX("zset", &redis.Z{ diff --git a/cluster_test.go b/cluster_test.go index 0a1c2f4..d97025f 100644 --- a/cluster_test.go +++ b/cluster_test.go @@ -1669,6 +1669,28 @@ var _ = Describe("RedisMock", func() { }) }) + It("ZAddArgs", func() { + operationIntCmd(clusterMock, func() *ExpectedInt { + return clusterMock.ExpectZAddArgs("zset", redis.ZAddArgs{ + Members: []redis.Z{ + { + Member: "a", + Score: 1, + }, + }, + }) + }, func() *redis.IntCmd { + return client.ZAddArgs(ctx, "zset", redis.ZAddArgs{ + Members: []redis.Z{ + { + Member: "a", + Score: 1, + }, + }, + }) + }) + }) + It("ZAddNX", func() { operationIntCmd(clusterMock, func() *ExpectedInt { return clusterMock.ExpectZAddNX("zset", &redis.Z{ diff --git a/expect.go b/expect.go index 9fa51b6..5ed9764 100644 --- a/expect.go +++ b/expect.go @@ -176,6 +176,7 @@ type baseMock interface { ExpectBZPopMax(timeout time.Duration, keys ...string) *ExpectedZWithKey ExpectBZPopMin(timeout time.Duration, keys ...string) *ExpectedZWithKey ExpectZAdd(key string, members ...*redis.Z) *ExpectedInt + ExpectZAddArgs(key string, args redis.ZAddArgs) *ExpectedInt ExpectZAddNX(key string, members ...*redis.Z) *ExpectedInt ExpectZAddXX(key string, members ...*redis.Z) *ExpectedInt ExpectZAddCh(key string, members ...*redis.Z) *ExpectedInt diff --git a/mock.go b/mock.go index a423b3d..389525b 100644 --- a/mock.go +++ b/mock.go @@ -257,7 +257,9 @@ func (m *mock) compare(isRegexp bool, expect, cmd interface{}) error { // using map in command leads to disorder, change the command parameter to map[string]interface{} // for example: +// // [mset key1 value1 key2 value2] => [mset map[string]interface{}{"key1": "value1", "key2": "value2"}] +// // return bool, is it handled func (m *mock) mapArgs(cmd string, cmdArgs *[]interface{}) bool { var cut int @@ -1402,6 +1404,13 @@ func (m *mock) ExpectZAdd(key string, members ...*redis.Z) *ExpectedInt { return e } +func (m *mock) ExpectZAddArgs(key string, args redis.ZAddArgs) *ExpectedInt { + e := &ExpectedInt{} + e.cmd = m.factory.ZAddArgs(m.ctx, key, args) + m.pushExpect(e) + return e +} + func (m *mock) ExpectZAddNX(key string, members ...*redis.Z) *ExpectedInt { e := &ExpectedInt{} e.cmd = m.factory.ZAddNX(m.ctx, key, members...)