-
Notifications
You must be signed in to change notification settings - Fork 9
Expand file tree
/
Copy pathmongo_test.go
More file actions
109 lines (96 loc) · 2.07 KB
/
mongo_test.go
File metadata and controls
109 lines (96 loc) · 2.07 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
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
package aerospike
import (
"fmt"
_ "github.com/adrianwit/mgc"
"github.com/stretchr/testify/assert"
"github.com/viant/dsc"
"github.com/viant/dsunit"
"github.com/viant/endly"
"github.com/viant/endly/system/docker"
"github.com/viant/toolbox"
"testing"
)
/*
Prerequisites:
1.docker service running
*/
//Global variables for all test integrating with endly.
var endlyManager = endly.New()
var endlyContext = endlyManager.NewContext(toolbox.NewContext())
func setup(t *testing.T) {
err := startMongo()
if err != nil {
t.Error(err)
t.FailNow()
}
}
func tearDown(t *testing.T) {
err := stopMongo()
if err != nil {
t.Error(err)
t.FailNow()
}
}
func TestDsunit_Mongo(t *testing.T) {
setup(t)
defer tearDown(t)
//dsc.Logf = dsc.StdoutLogger
if dsunit.InitFromURL(t, "config/init.json") {
if !dsunit.PrepareFor(t, "mydb", "data", "use_case_1") {
return
}
err := runSomeBusinessLogic()
if !assert.Nil(t, err) {
return
}
dsunit.ExpectFor(t, "mydb", dsunit.FullTableDatasetCheckPolicy, "data", "use_case_1")
}
}
func getConfig() (*dsc.Config, error) {
return dsc.NewConfigWithParameters("mgc", "", "", map[string]interface{}{
"dbname": "mydb",
"host": "127.0.0.1",
"keyColumn": "id",
})
}
func runSomeBusinessLogic() error {
config, err := getConfig()
if err != nil {
return err
}
manager, err := dsc.NewManagerFactory().Create(config)
if err != nil {
return err
}
result, err := manager.Execute("UPDATE users SET comments = ? WHERE id = ?", "dsunit test", 3)
if err != nil {
return err
}
sqlResult, err := result.RowsAffected()
if err != nil {
return err
}
if sqlResult != 1 {
return fmt.Errorf("expected one row updated but had: %v", sqlResult)
}
return nil
}
func startMongo() error {
_, err := endlyManager.Run(endlyContext, &docker.RunRequest{
Image: "mongo:latest",
Ports: map[string]string{
"27017": "27017",
},
Name: "mongo_dsunit",
})
return err
}
func stopMongo() error {
_, err := endlyManager.Run(endlyContext, &docker.StopRequest{
Name: "mongo_dsunit",
})
if err != nil {
return err
}
return err
}