Skip to content

Commit c151d71

Browse files
committed
Rewritten test with gomock.
1 parent 91f9084 commit c151d71

File tree

3 files changed

+40
-40
lines changed

3 files changed

+40
-40
lines changed

database/pgComment_test.go

Lines changed: 32 additions & 38 deletions
Original file line numberDiff line numberDiff line change
@@ -2,72 +2,66 @@ package database
22

33
import (
44
"context"
5+
"github.com/dipdup-net/go-lib/mocks"
56
"github.com/go-pg/pg/v10"
6-
"github.com/stretchr/testify/mock"
7-
"sort"
7+
"github.com/golang/mock/gomock"
88
"testing"
99
)
1010

1111
type PgGoMock struct {
12-
conn *PgDBMock
12+
conn *mocks.MockPgDB
1313
}
1414

1515
func (p *PgGoMock) DB() PgDB {
1616
return p.conn
1717
}
1818

19-
func newPgGoMock() *PgGoMock {
19+
func newPgGoMock(pgDB *mocks.MockPgDB) *PgGoMock {
2020
return &PgGoMock{
21-
conn: &PgDBMock{},
21+
conn: pgDB,
2222
}
2323
}
2424

25-
type PgDBMock struct {
26-
mock.Mock
27-
}
28-
29-
func (db *PgDBMock) ExecContext(ctx context.Context, query interface{}, params ...interface{}) (pg.Result, error) {
30-
args := db.Called(ctx, query, params)
31-
32-
return nil, args.Error(0)
33-
}
34-
3525
func TestMakeCommentsWithTableName(t *testing.T) {
3626
type Ballot struct {
3727
//nolint
3828
tableName struct{} `pg:"ballots" pg-comment:"Ballot table"`
3929
Ballot string `json:"ballot"`
4030
}
4131

42-
pgGo := newPgGoMock()
43-
ctx := context.Background()
44-
pgGo.conn.On("ExecContext",
45-
ctx, mock.Anything, mock.Anything).Return(nil)
32+
mockCtrl, mockPgDB, pgGo, ctx := createPgDbMock(t)
4633
model := Ballot{}
4734

35+
// Assert params of ExecContext
36+
expectedParams := toInterfaceSlice([]pg.Safe{"ballots", "Ballot table"})
37+
mockPgDB.
38+
EXPECT().
39+
ExecContext(ctx, "COMMENT ON TABLE ? IS ?",
40+
gomock.Eq(expectedParams)).
41+
Return(nil, nil)
42+
43+
// Act
4844
makeComments(ctx, pgGo, model)
4945

50-
// assert params of ExecContext
51-
pgGo.conn.AssertCalled(t, "ExecContext",
52-
ctx, "COMMENT ON TABLE ? IS ?", []pg.Safe{"ballots", "Ballot table"})
46+
// Assert
47+
defer mockCtrl.Finish()
48+
}
49+
50+
func createPgDbMock(t *testing.T) (*gomock.Controller, *mocks.MockPgDB, *PgGoMock, context.Context) {
51+
mockCtrl := gomock.NewController(t)
52+
mockPgDB := mocks.NewMockPgDB(mockCtrl)
53+
pgGo := newPgGoMock(mockPgDB)
54+
ctx := context.Background()
5355

54-
//paramsMatcher := mock.MatchedBy(func(params []string) bool {
55-
// return IsEqual(params, []string{"ballots", "Ballot table"})
56-
//})
57-
//pgGo.conn.AssertCalled(t, "ExecContext", paramsMatcher)
56+
return mockCtrl, mockPgDB, pgGo, ctx
5857
}
5958

60-
func IsEqual(a1 []string, a2 []string) bool {
61-
sort.Strings(a1)
62-
sort.Strings(a2)
63-
if len(a1) == len(a2) {
64-
for i, v := range a1 {
65-
if v != a2[i] {
66-
return false
67-
}
68-
}
69-
} else {
70-
return false
59+
func toInterfaceSlice(origin []pg.Safe) []interface{} {
60+
res := make([]interface{}, len(origin))
61+
62+
for i := range origin {
63+
res[i] = origin[i]
7164
}
72-
return true
65+
66+
return res
7367
}

go.mod

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ require (
77
github.com/ebellocchia/go-base58 v0.1.0
88
github.com/go-pg/pg/v10 v10.10.6
99
github.com/go-playground/validator/v10 v10.9.0
10+
github.com/golang/mock v1.6.0
1011
github.com/gorilla/websocket v1.4.2
1112
github.com/iancoleman/strcase v0.2.0
1213
github.com/json-iterator/go v1.1.12
@@ -55,7 +56,6 @@ require (
5556
github.com/prometheus/client_model v0.2.0 // indirect
5657
github.com/prometheus/common v0.26.0 // indirect
5758
github.com/prometheus/procfs v0.6.0 // indirect
58-
github.com/stretchr/objx v0.2.0 // indirect
5959
github.com/tidwall/match v1.1.1 // indirect
6060
github.com/tidwall/pretty v1.2.0 // indirect
6161
github.com/tmthrgd/go-hex v0.0.0-20190904060850-447a3041c3bc // indirect

go.sum

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -62,6 +62,8 @@ github.com/gofrs/uuid v4.0.0+incompatible/go.mod h1:b2aQJv3Z4Fp6yNu3cdSllBxTCLRx
6262
github.com/gogo/protobuf v1.1.1/go.mod h1:r8qH/GZQm5c6nD/R0oafs1akxWv10x8SbQlK7atdtwQ=
6363
github.com/golang/glog v0.0.0-20160126235308-23def4e6c14b/go.mod h1:SBH7ygxi8pfUlaOkMMuAQtPIUF8ecWP5IEl/CR7VP2Q=
6464
github.com/golang/mock v1.1.1/go.mod h1:oTYuIxOrZwtPieC+H1uAHpcLFnEyAGVDL/k47Jfbm0A=
65+
github.com/golang/mock v1.6.0 h1:ErTB+efbowRARo13NNdxyJji2egdxLGQhRaY+DUumQc=
66+
github.com/golang/mock v1.6.0/go.mod h1:p6yTPP+5HYm5mzsMV8JkE6ZKdX+/wYM6Hr+LicevLPs=
6567
github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U=
6668
github.com/golang/protobuf v1.3.1/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U=
6769
github.com/golang/protobuf v1.3.2/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U=
@@ -248,7 +250,6 @@ github.com/sirupsen/logrus v1.4.2/go.mod h1:tLMulIdttU9McNUspp0xgXVQah82FyeX6Mwd
248250
github.com/sirupsen/logrus v1.6.0/go.mod h1:7uNnSEd1DgxDLC74fIahvMZmmYsHGZGEOFrfsX/uA88=
249251
github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
250252
github.com/stretchr/objx v0.1.1/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
251-
github.com/stretchr/objx v0.2.0 h1:Hbg2NidpLE8veEBkEZTL3CvlkUIVzuU9jDplZO54c48=
252253
github.com/stretchr/objx v0.2.0/go.mod h1:qt09Ya8vawLte6SNmTgCsAVtYtaKzEcn8ATUoHMkEqE=
253254
github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs=
254255
github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI=
@@ -275,6 +276,7 @@ github.com/vmihailenco/tagparser/v2 v2.0.0 h1:y09buUbR+b5aycVFQs/g70pqKVZNBmxwAh
275276
github.com/vmihailenco/tagparser/v2 v2.0.0/go.mod h1:Wri+At7QHww0WTrCBeu4J6bNtoV6mEfg5OIWRZA9qds=
276277
github.com/yhirose/go-peg v0.0.0-20210804202551-de25d6753cf1 h1:7iTmQ0lZwTtfm4XMgP5ezzWMDCjo7GTS0ZgCj6jpVzM=
277278
github.com/yhirose/go-peg v0.0.0-20210804202551-de25d6753cf1/go.mod h1:q2QWLflHsZxT6ixYcXveTYicEvxGh5Uv6CnI7f7BfjQ=
279+
github.com/yuin/goldmark v1.3.5/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k=
278280
github.com/yuin/goldmark v1.4.0/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k=
279281
github.com/zenazn/goji v0.9.0/go.mod h1:7S9M489iMyHBNxwZnk9/EHS098H4/F6TATF2mIxtB1Q=
280282
go.uber.org/atomic v1.3.2/go.mod h1:gD2HeocX3+yG+ygLZcrzQJaqmWj9AIm7n08wl/qW/PE=
@@ -325,6 +327,7 @@ golang.org/x/net v0.0.0-20200520004742-59133d7f0dd7/go.mod h1:qpuaurCH72eLCgpAm/
325327
golang.org/x/net v0.0.0-20200625001655-4c5254603344/go.mod h1:/O7V0waA8r7cgGh81Ro3o1hOxt32SMVPicZroKQ2sZA=
326328
golang.org/x/net v0.0.0-20201006153459-a7d1128ccaa0/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU=
327329
golang.org/x/net v0.0.0-20210226172049-e18ecbb05110/go.mod h1:m0MpNAwzfU5UDzcl9v0D8zg8gWTRqZa9RBIspLL5mdg=
330+
golang.org/x/net v0.0.0-20210405180319-a5a99cb37ef4/go.mod h1:p54w0d4576C0XHj96bSt6lcn1PtDYWL6XObtHCRCNQM=
328331
golang.org/x/net v0.0.0-20210805182204-aaa1db679c0d/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y=
329332
golang.org/x/net v0.5.0 h1:GyT4nK/YDHSqa1c4753ouYCDajOYKTja9Xb/OHtgvSw=
330333
golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U=
@@ -360,7 +363,9 @@ golang.org/x/sys v0.0.0-20200625212154-ddb9806d33ae/go.mod h1:h1NjWce9XRLGQEsW7w
360363
golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
361364
golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
362365
golang.org/x/sys v0.0.0-20210124154548-22da62e12c0c/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
366+
golang.org/x/sys v0.0.0-20210330210617-4fbd30eecc44/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
363367
golang.org/x/sys v0.0.0-20210423082822-04245dca01da/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
368+
golang.org/x/sys v0.0.0-20210510120138-977fb7262007/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
364369
golang.org/x/sys v0.0.0-20210603081109-ebe580a85c40/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
365370
golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
366371
golang.org/x/sys v0.0.0-20210806184541-e5e7981a1069/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
@@ -390,6 +395,7 @@ golang.org/x/tools v0.0.0-20191029041327-9cc4af7d6b2c/go.mod h1:b+2E5dAYhXwXZwtn
390395
golang.org/x/tools v0.0.0-20191029190741-b9c20aec41a5/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
391396
golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
392397
golang.org/x/tools v0.0.0-20200103221440-774c71fcf114/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28=
398+
golang.org/x/tools v0.1.1/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk=
393399
golang.org/x/tools v0.1.7/go.mod h1:LGqMHiF4EqQNHR1JncWGqT5BVaXmza+X+BDGol+dOxo=
394400
golang.org/x/xerrors v0.0.0-20190410155217-1f06c39b4373/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
395401
golang.org/x/xerrors v0.0.0-20190513163551-3ee3066db522/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=

0 commit comments

Comments
 (0)