plugins/tests/db_test.go
2024-06-26 12:17:41 +08:00

103 lines
2.3 KiB
Go

package tests
import (
"apigo.cc/apigo/gojs"
"apigo.cc/apigo/plugin"
_ "apigo.cc/apigo/plugins/db"
_ "apigo.cc/apigo/plugins/file"
_ "apigo.cc/apigo/plugins/redis"
_ "github.com/mattn/go-sqlite3"
"github.com/ssgo/u"
"os"
"testing"
)
func T1estSql(t *testing.T) {
rt := gojs.New(nil)
defer rt.Close()
gojs.SetPluginsConfig(map[string]plugin.Config{
"apigo.cc/apigo/plugins/db": {
"default": "sqlite3://Test.db",
},
})
defer func() {
_ = os.Remove("Test.db")
}()
var r interface{} = false
err := rt.ExecFile("db_tests/db_test.js")
if err == nil {
r, err = rt.Run(`return testInsert()`)
}
Test(t, "create and insert", r == "1,2,3 | 1,1,1", r, err)
r, err = rt.Run(`return testUpdate()`)
Test(t, "update", u.Int(r) == 1, r, err)
r, err = rt.Run(`return testDelete()`)
Test(t, "delete", u.Int(r) == 1, r, err)
r, err = rt.Run(`return testQuery()`)
list := make([]struct {
Id int
Name string
}, 0)
u.Convert(r, &list)
Test(t, "list", len(list) == 1 && list[0].Name == "Lucy Wang", r, err)
rt.Exec("db.destroy()")
}
func TestDao(t *testing.T) {
rdServer := StartRedis("16379")
defer rdServer.Close()
gojs.SetPluginsConfig(map[string]plugin.Config{
"apigo.cc/apigo/plugins/db": {
"default": "sqlite3://Test.db",
},
"apigo.cc/apigo/plugins/redis": {
"default": "redis://localhost:16379",
},
})
defer func() {
_ = os.Remove("Test.db")
_ = os.Remove("er.html")
_ = os.Remove("db_tests/TestDao.js")
}()
_, err := gojs.RunFile("db_tests/dao_init.js", nil)
Test(t, "create dao file", err == nil && u.FileExists("db_tests/TestDao.js"), err)
rt := gojs.New(nil)
defer rt.Close()
err = rt.ExecFile("db_tests/dao_test.js")
r, err := rt.Run(`return testInsert()`)
Test(t, "create and insert", r == "1,2,3 | 1,2,3", r, err)
r, err = rt.Run(`return testGet()`)
Test(t, "get", r == "Tom", r, err)
r, err = rt.Run(`return testUpdate()`)
Test(t, "update", r == "1,4", r, err)
r, err = rt.Run(`return testDisable()`)
Test(t, "disable", u.Int(r) == 1, r, err)
r, err = rt.Run(`return testList()`)
list := make([]struct {
Id int
Name string
}, 0)
u.Convert(r, &list)
Test(t, "list", len(list) == 1 && list[0].Name == "Lucy Wang", r, err)
r, err = rt.Run(`return testExt()`)
Test(t, "table ext", r == "Tom", r, err)
r, err = rt.Run(`return testER()`)
Test(t, "er", r == "account", r, err)
}