forked from viant/dsunit
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathdataset_test.go
More file actions
99 lines (88 loc) · 2.64 KB
/
dataset_test.go
File metadata and controls
99 lines (88 loc) · 2.64 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
package dsunit_test
import (
"github.com/stretchr/testify/assert"
"github.com/viant/assertly"
"github.com/viant/dsunit"
"github.com/viant/toolbox"
"path"
"strings"
"testing"
)
func TestNewDataset(t *testing.T) {
{
dataset := dsunit.NewDataset("table1",
map[string]interface{}{
assertly.IndexByDirective: []string{"id"},
dsunit.AutoincrementDirective: "id",
},
map[string]interface{}{},
map[string]interface{}{
"id": 1,
"username": "Dudi",
"active": true,
"comments": "abc",
"@source@": "pk:1",
},
map[string]interface{}{
"id": 2,
"username": "Bogi",
"active": false,
"email": "a@as.ws",
})
assert.Equal(t, "table1", dataset.Table)
assert.True(t, dataset.Records.Autoincrement())
assert.True(t, dataset.Records.ShouldDeleteAll())
assert.Equal(t, []string{"id"}, dataset.Records.UniqueKeys())
assert.Equal(t, []string{"active", "comments", "email", "id", "username"}, dataset.Records.Columns())
context := toolbox.NewContext()
records, err := dataset.Records.Expand(context, false)
if assert.Nil(t, err) {
assert.Equal(t, 2, len(records))
assert.EqualValues(t, map[string]interface{}{
"id": 1,
"username": "Dudi",
"active": true,
"comments": "abc",
}, records[0])
}
}
{
dataset := dsunit.NewDataset("table1",
map[string]interface{}{
assertly.IndexByDirective: "id",
dsunit.FromQueryDirective: "SELECT * FROM table1",
},
map[string]interface{}{
"id": 1,
"username": "Dudi",
"active": true,
"@source@": "pk:1",
},
map[string]interface{}{
"id": 2,
"username": "Bogi",
"active": false,
"email": "a@as.ws",
})
assert.Equal(t, "table1", dataset.Table)
assert.False(t, dataset.Records.Autoincrement())
assert.Equal(t, []string{"id"}, dataset.Records.UniqueKeys())
assert.Equal(t, []string{"active", "email", "id", "username"}, dataset.Records.Columns())
var query, _ = dataset.Records.FromQuery()
assert.EqualValues(t, "SELECT * FROM table1", query)
}
}
func TestNewDatasetResource_Load(t *testing.T) {
baseDirectory := toolbox.CallerDirectory(3)
datasetResource := dsunit.NewDatasetResource("db1", path.Join(baseDirectory, "test", "load"), "prefix_", "")
if assert.Nil(t, datasetResource.Load()) {
assert.EqualValues(t, 4, len(datasetResource.Datasets))
for _, dataset := range datasetResource.Datasets {
context := toolbox.NewContext()
records, err := dataset.Records.Expand(context, false)
assert.Nil(t, err)
assert.EqualValues(t, 3, len(records))
assert.True(t, strings.HasPrefix(dataset.Table, "user"), dataset.Table)
}
}
}