forked from d7561985/mongo-buffalo
-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathconnection_test.go
More file actions
94 lines (79 loc) · 1.83 KB
/
connection_test.go
File metadata and controls
94 lines (79 loc) · 1.83 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
package mongobuf_test
import (
"github.com/gobuffalo/validate"
"github.com/gobuffalo/validate/validators"
"github.com/icrowley/fake"
"github.com/kataras/iris/core/errors"
"go.mongodb.org/mongo-driver/bson"
"go.mongodb.org/mongo-driver/bson/primitive"
"github.com/stretchr/testify/assert"
"sync"
)
type A struct {
ID primitive.ObjectID `bson:"_id"`
A string
AnnnaLirra int
}
func (a *A) Validate() *validate.Errors {
return validate.Validate(
&validators.StringIsPresent{Field: a.A, Name: "A"},
)
}
type As []A
func (As) T() interface{} {
return &A{}
}
func (a *As) Add(in interface{}) error {
link, ok := in.(*A)
if !ok {
return errors.New("bad cast")
}
*a = append(*a, *link)
return nil
}
func (m *MongoSuit) TestPing() {
err := m.db.Ping()
assert.NoError(m.T(), err)
}
// create
func (m *MongoSuit) TestCRUD1() {
in := A{}
// first check validation
verr, err := m.db.Create(&in)
assert.True(m.T(), verr.HasAny())
assert.NoError(m.T(), err)
// for not validation should pass
in.A = "not blank"
verr, err = m.db.Create(&in)
assert.False(m.T(), verr.HasAny())
assert.NoError(m.T(), err)
assert.NotEqual(m.T(), in.ID, primitive.NilObjectID)
m.Store["CRUD"] = in.ID
}
// update
func (m *MongoSuit) TestCRUD2() {
if !assert.NotEqual(m.T(), primitive.NilObjectID, m.Store["CRUD"]) {
return
}
in := A{A: "Update", ID: m.Store["CRUD"]}
verr, err := m.db.Update(&in)
assert.False(m.T(), verr.HasAny())
assert.NoError(m.T(), err)
}
func (m *MongoSuit) TestAll() {
g := sync.WaitGroup{}
for i := 0; i < 10; i++ {
g.Add(1)
go func() {
verr, err := m.db.Create(&A{A: fake.Brand()})
assert.NoError(m.T(), err)
assert.False(m.T(), verr.HasAny())
g.Done()
}()
}
g.Wait()
list := make(As, 0)
err := m.db.All(&list, bson.M{})
assert.NoError(m.T(), err)
assert.NotEmpty(m.T(), list)
}