plugins/tests/db_test.go
2024-02-18 13:23:11 +08:00

57 lines
1.3 KiB
Go

package tests
import (
"apigo.cloud/git/apigo/gojs"
"apigo.cloud/git/apigo/plugin"
_ "apigo.cloud/git/apigo/plugins/db"
_ "github.com/mattn/go-sqlite3"
"github.com/ssgo/u"
"os"
"testing"
)
func TestSqlite(t *testing.T) {
rt := gojs.New(nil, nil)
defer rt.Close()
gojs.SetPluginsConfig(map[string]plugin.Config{
"db": {
"default": "sqlite3://test.db",
},
})
defer os.Remove("test.db")
r, err, _ := rt.Run(`
db.exec('CREATE TABLE test (id INTEGER PRIMARY KEY AUTOINCREMENT, name VARCHAR(30))')
id1 = db.insert('test', {name:'Tom'})
id2 = db.replace('test', {name:'Kitty'})
id3 = db.insert('test', {name:'Lucy'})
return id1 + id2 + id3
`)
Test(t, "create and insert", u.Int(r) == 6, r, err)
r, err, _ = rt.Run(`
changes = db.fetch().update('test', {name:'Lucy Wang'}, 'id=?', 3)
return changes
`)
Test(t, "update", u.Int(r) == 1, r, err)
r, err, _ = rt.Run(`
changes = db.fetch().delete('test', 'id=?', 2)
return changes
`)
Test(t, "update", u.Int(r) == 1, r, err)
r, err, _ = rt.Run(`
list = db.fetch().query('select id,name from test where id > ?', 1)
return list
`)
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)
}