-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathrepository_test.go
More file actions
86 lines (71 loc) · 2.03 KB
/
repository_test.go
File metadata and controls
86 lines (71 loc) · 2.03 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
package sqlorm_test
import (
"testing"
"github.com/stretchr/testify/require"
"github.com/tinh-tinh/sqlorm/v2"
"gorm.io/gorm"
)
func Test_Map(t *testing.T) {
type Todo struct {
gorm.Model
Name string `gorm:"type:varchar(255);not null"`
}
type CreateTodo struct {
Name string
Haha string
Hihi string
}
data := sqlorm.MapOne[Todo](&CreateTodo{Name: "haha", Haha: "haha", Hihi: "hihi"})
require.Equal(t, "haha", data.Name)
data2 := sqlorm.MapOne[Todo](map[string]interface{}{
"Name": "hihi",
"Age": 6,
})
require.Equal(t, "hihi", data2.Name)
data3 := sqlorm.MapOne[Todo](nil)
require.Empty(t, data3.Name)
data4 := sqlorm.MapOne[Todo]("abc")
require.Empty(t, data4.Name)
input := []*CreateTodo{
{Name: "abc", Haha: "haha", Hihi: "hihi"},
{Name: "def", Haha: "haha", Hihi: "hihi"},
{Name: "ghi", Haha: "haha", Hihi: "hihi"},
{Name: "jkl", Haha: "haha", Hihi: "hihi"},
}
lists := sqlorm.MapMany[Todo](input)
require.Equal(t, 4, len(lists))
require.Equal(t, "abc", lists[0].Name)
require.Equal(t, "def", lists[1].Name)
require.Equal(t, "ghi", lists[2].Name)
require.Equal(t, "jkl", lists[3].Name)
input2 := []map[string]interface{}{
{"Name": "abc", "Haha": "haha", "Hihi": "hihi"},
{"Name": "def", "Haha": "haha", "Hihi": "hihi"},
{"Name": "ghi", "Haha": "haha", "Hihi": "hihi"},
{"name": "jkl", "Haha": "haha", "Hihi": "hihi"},
}
lists2 := sqlorm.MapMany[Todo](input2)
require.Equal(t, 4, len(lists2))
require.Equal(t, "abc", lists2[0].Name)
require.Equal(t, "def", lists2[1].Name)
require.Equal(t, "ghi", lists2[2].Name)
require.Equal(t, "jkl", lists2[3].Name)
list3 := sqlorm.MapMany[Todo](map[string]interface{}{
"Name": "abc",
"Age": 6,
})
require.Equal(t, 0, len(list3))
list4 := sqlorm.MapMany[Todo](nil)
require.Equal(t, 0, len(list4))
}
type Abc struct {
gorm.Model
Name string `gorm:"type:varchar(255);not null"`
}
func (Abc) RepositoryName() string {
return "service"
}
func TestNameRepo(t *testing.T) {
repo := sqlorm.NewRepo(Abc{})
require.Equal(t, "service", repo.GetName())
}