Files
simpleorm/test/repository_test.go
T
gdulai 890151b490 WIP: Insert sets PK
WIP: Insert sets PK
2026-05-21 22:21:09 +02:00

149 lines
3.2 KiB
Go

package simpleorm_test
import (
"testing"
simpleorm "git.gdulai.com/gdulai/simpleorm"
"git.gdulai.com/gdulai/simpleorm/exec"
"git.gdulai.com/gdulai/simpleorm/repository"
log "gitlab.com/gdulai/simpleloglvl"
)
func repoTestSetup() (*simpleorm.ORM, *simpleorm.DBConnection) {
conn := simpleorm.OpenConnection("sqlite3", "file:test.db")
orm := simpleorm.NewORM(Test{}, TestWithFk{}, TestWithFkAndFkId{},
TestWithCompositePk{}, TestWithCompositeFk{})
exec.ExecuteDDL(conn, orm)
return orm, conn
}
func TestRepoSelectAll(t *testing.T) {
// GIVEN
orm, conn := repoTestSetup()
defer cleanUp("test.db", conn)
testObj := Test{Int64Field: 54, IntField: 12, StringField: "asdf"}
insertExec, err := exec.NewInsert(orm, &testObj)
if err != nil {
log.LogError("TestRepoSelectAll setup failed: %s", err)
t.Fail()
return
}
err = insertExec.Execute(conn)
repo := repository.NewRepository[*Test](conn, orm)
// WHEN
res := repo.SelectAll()
// THEN
if len(res) != 1 {
log.LogError("TestRepoSelectAll test failed. Expected: 1, Actual: %s", len(res))
t.Fail()
return
}
}
func TestRepoSelectByPk(t *testing.T) {
// GIVEN
orm, conn := repoTestSetup()
defer cleanUp("test.db", conn)
testObj := Test{Int64Field: 54, IntField: 12, StringField: "asdf"}
insertExec, err := exec.NewInsert(orm, &testObj)
if err != nil {
log.LogError("TestRepoSelectByPk setup failed: %s", err)
t.Fail()
return
}
err = insertExec.Execute(conn)
repo := repository.NewRepository[*Test](conn, orm)
// WHEN
res := repo.SelectByPk(1)
// THEN
if res == nil {
log.LogError("TestRepoSelectByPk test failed. Result is nil!")
t.Fail()
return
}
}
func TestRepoSelectByCompundPk(t *testing.T) {
// GIVEN
orm, conn := repoTestSetup()
defer cleanUp("test.db", conn)
testObj := TestWithCompositePk{ID: 42069, Name: "Test"}
insertExec, err := exec.NewInsert(orm, &testObj)
if err != nil {
log.LogError("TestRepoSelectByCompundPk setup failed: %s", err)
t.Fail()
return
}
err = insertExec.Execute(conn)
repo := repository.NewRepository[*TestWithCompositePk](conn, orm)
// WHEN
res := repo.SelectByPk(42069, "Test")
// THEN
if res == nil {
log.LogError("TestRepoSelectByCompundPk test failed. Result is nil!")
t.Fail()
return
}
}
func TestRepoSave(t *testing.T) {
// GIVEN
orm, conn := repoTestSetup()
defer cleanUp("test.db", conn)
testObj := Test{Int64Field: 54, IntField: 12, StringField: "asdf"}
repo := repository.NewRepository[*Test](conn, orm)
// WHEN
repo.Save(&testObj)
// THEN
res := repo.SelectByPk(1)
if res == nil {
log.LogError("TestRepoSave test failed. Result is nil!")
t.Fail()
return
}
}
func TestRepoDelete(t *testing.T) {
// GIVEN
orm, conn := repoTestSetup()
defer cleanUp("test.db", conn)
testObj := Test{Int64Field: 54, IntField: 12, StringField: "asdf"}
repo := repository.NewRepository[*Test](conn, orm)
repo.Save(&testObj)
res := repo.SelectByPk(1)
if res == nil {
log.LogError("TestRepoDelete setup failed! Test data not saved!")
t.Fail()
return
}
// WHEN
repo.Delete(*res)
// THEN
res = repo.SelectByPk(1)
if res != nil {
log.LogError("TestRepoDelete test failed. Result is not nil!")
t.Fail()
return
}
}