Files
simpleorm/test/main_test.go
T
gdulai 30e148f0e3
Go Tests / test (push) Successful in 1m3s
Multi struct test case
2026-06-06 10:34:47 +02:00

88 lines
1.8 KiB
Go

package simpleorm_test
import (
"os"
"testing"
simpleorm "git.gdulai.com/gdulai/simpleorm"
"git.gdulai.com/gdulai/simpleorm/exec"
_ "github.com/mattn/go-sqlite3"
log "gitlab.com/gdulai/simpleloglvl"
)
type Test struct {
ID int `sql:"pk"`
Int64Field int64 `sql:"nn"`
IntField int `sql:"nn"`
StringField string `sql:"nn"`
}
func (t Test) IsInsertable() bool {
return t.ID == 0
}
type TestWithFk struct {
ID int `sql:"pk"`
TestID int `sql:"nn;fk=Test.ID"`
}
type TestWithFkAndFkId struct {
ID int `sql:"pk"`
TestID int `sql:"nn;fk=Test.ID;fk_id=custom_fk"`
}
type TestWithCompositePk struct {
ID int `sql:"nn;pk;"`
Name string `sql:"nn;pk"`
}
func (t TestWithCompositePk) IsInsertable() bool {
return t.ID == 0 && t.Name == ""
}
type TestWithCompositeFk struct {
ID int `sql:"nn;pk"`
CompositeFkId int `sql:"nn;fk=TestWithCompositePk.ID;"`
CompositeFkName string `sql:"nn;fk=TestWithCompositePk.Name;"`
}
type TestWithBool struct {
ID int `sql:"pk"`
BoolField bool `sql:"nn"`
}
type TestWithTime struct {
ID int `sql:"pk"`
TimeField int64 `sql:"nn"`
}
type TestWithJsonStructTag struct {
ID int `json:"id" sql:"pk"`
Int64Field int64 `json:"int64Field" sql:"nn"`
IntField int `json:"intField" sql:"nn"`
StringField string `json:"stringField" sql:"nn"`
}
func TestMain(m *testing.M) {
log.SetupLogs("Info")
code := m.Run()
os.Exit(code)
}
func testSetup() (*simpleorm.ORM, *simpleorm.DBConnection) {
conn := simpleorm.OpenConnection("sqlite3", "file:test.db")
orm := simpleorm.NewORM(Test{}, TestWithFk{}, TestWithFkAndFkId{},
TestWithCompositePk{}, TestWithCompositeFk{}, TestWithBool{}, TestWithTime{})
exec.ExecuteDDL(conn, orm)
return orm, conn
}
func cleanUp(dbFile string, conn *simpleorm.DBConnection) {
conn.Close()
os.Remove(dbFile)
}