149 lines
3.2 KiB
Go
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
|
|
}
|
|
}
|