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

136 lines
4.8 KiB
Go

package simpleorm_test
import (
"strconv"
"testing"
simpleorm "git.gdulai.com/gdulai/simpleorm"
log "gitlab.com/gdulai/simpleloglvl"
)
func TestParseSimple(t *testing.T) {
log.LogInfo("Test start...")
// GIVEN
orm := simpleorm.NewORM(Test{})
// WHEN
ddl, err := orm.CreateSchema()
// THEN
if err != nil {
log.LogError("Failed to parse schema! %s", err)
t.Fail()
}
expectedDdl := "CREATE TABLE IF NOT EXISTS TEST (ID INTEGER, INT64_FIELD BIGINT NOT NULL, INT_FIELD INTEGER NOT NULL, STRING_FIELD TEXT NOT NULL, CONSTRAINT pk_test PRIMARY KEY(ID));"
if ddl != expectedDdl {
log.LogError("Incorrect DDL.\nExpected\n%s\nActual\n%s", expectedDdl, ddl)
log.LogError("\nExpected size: %s\nActual size: %s", strconv.Itoa(len(expectedDdl)), strconv.Itoa(len(ddl)))
t.Fail()
}
log.LogInfo("Test finished!")
}
func TestParseFk(t *testing.T) {
log.LogInfo("Test start...")
// GIVEN
orm := simpleorm.NewORM(Test{}, TestWithFk{})
// WHEN
ddl, err := orm.CreateSchema()
// THEN
if err != nil {
log.LogError("Failed to parse schema! %s", err)
t.Fail()
}
expectedDdl :=
"CREATE TABLE IF NOT EXISTS TEST (ID INTEGER, INT64_FIELD BIGINT NOT NULL, INT_FIELD INTEGER NOT NULL, STRING_FIELD TEXT NOT NULL, CONSTRAINT pk_test PRIMARY KEY(ID));\n" +
"CREATE TABLE IF NOT EXISTS TEST_WITH_FK (ID INTEGER, TEST_ID INTEGER NOT NULL, CONSTRAINT pk_test_with_fk PRIMARY KEY(ID), CONSTRAINT fk_test FOREIGN KEY(TEST_ID) REFERENCES TEST(ID));"
if ddl != expectedDdl {
log.LogError("Incorrect DDL.\nExpected\n%s\nActual\n%s", expectedDdl, ddl)
log.LogError("\nExpected size: %s\nActual size: %s", strconv.Itoa(len(expectedDdl)), strconv.Itoa(len(ddl)))
t.Fail()
}
log.LogInfo("Test finished!")
}
func TestParseFkAndFkId(t *testing.T) {
// GIVEN
orm := simpleorm.NewORM(Test{}, TestWithFkAndFkId{})
// WHEN
// WHEN
ddl, err := orm.CreateSchema()
// THEN
if err != nil {
log.LogError("Failed to parse schema! %s", err)
t.Fail()
}
expectedDdl :=
"CREATE TABLE IF NOT EXISTS TEST (ID INTEGER, INT64_FIELD BIGINT NOT NULL, INT_FIELD INTEGER NOT NULL, STRING_FIELD TEXT NOT NULL, CONSTRAINT pk_test PRIMARY KEY(ID));\n" +
"CREATE TABLE IF NOT EXISTS TEST_WITH_FK_AND_FK_ID (ID INTEGER, TEST_ID INTEGER NOT NULL, CONSTRAINT pk_test_with_fk_and_fk_id PRIMARY KEY(ID), CONSTRAINT custom_fk FOREIGN KEY(TEST_ID) REFERENCES TEST(ID));"
if ddl != expectedDdl {
log.LogError("Incorrect DDL.\nExpected\n%s\nActual\n%s", expectedDdl, ddl)
log.LogError("\nExpected size: %s\nActual size: %s", strconv.Itoa(len(expectedDdl)), strconv.Itoa(len(ddl)))
t.Fail()
}
}
func TestParseCompositePk(t *testing.T) {
// GIVEN
orm := simpleorm.NewORM(TestWithCompositePk{})
// WHEN
ddl, err := orm.CreateSchema()
// THEN
if err != nil {
log.LogError("Failed to parse schema! %s", err)
t.Fail()
}
expectedDdl := "CREATE TABLE IF NOT EXISTS TEST_WITH_COMPOSITE_PK (ID INTEGER NOT NULL, NAME TEXT NOT NULL, CONSTRAINT pk_test_with_composite_pk PRIMARY KEY(ID, NAME));"
if ddl != expectedDdl {
log.LogError("Incorrect DDL.\nExpected\n%s\nActual\n%s", expectedDdl, ddl)
log.LogError("\nExpected size: %s\nActual size: %s", strconv.Itoa(len(expectedDdl)), strconv.Itoa(len(ddl)))
t.Fail()
}
}
func TestParseCompositeFk(t *testing.T) {
// GIVEN
orm := simpleorm.NewORM(TestWithCompositePk{}, TestWithCompositeFk{})
// WHEN
ddl, err := orm.CreateSchema()
// THEN
if err != nil {
log.LogError("Failed to parse schema! %s", err)
t.Fail()
}
expectedDdl :=
"CREATE TABLE IF NOT EXISTS TEST_WITH_COMPOSITE_PK (ID INTEGER NOT NULL, NAME TEXT NOT NULL, CONSTRAINT pk_test_with_composite_pk PRIMARY KEY(ID, NAME));\n" +
"CREATE TABLE IF NOT EXISTS TEST_WITH_COMPOSITE_FK (ID INTEGER NOT NULL, COMPOSITE_FK_ID INTEGER NOT NULL, COMPOSITE_FK_NAME TEXT NOT NULL, CONSTRAINT pk_test_with_composite_fk PRIMARY KEY(ID), CONSTRAINT fk_test_with_composite_pk FOREIGN KEY(COMPOSITE_FK_ID, COMPOSITE_FK_NAME) REFERENCES TEST_WITH_COMPOSITE_PK(ID, NAME));"
if ddl != expectedDdl {
log.LogError("Incorrect DDL.\nExpected\n%s\nActual\n%s", expectedDdl, ddl)
log.LogError("\nExpected size: %s\nActual size: %s", strconv.Itoa(len(expectedDdl)), strconv.Itoa(len(ddl)))
t.Fail()
}
}
func TestParseStructWithJsonTag(t *testing.T) {
// GIVEN
orm := simpleorm.NewORM(TestWithJsonStructTag{})
// WHEN
ddl, err := orm.CreateSchema()
// THEN
if err != nil {
log.LogError("Failed to parse schema! %s", err)
t.Fail()
}
expectedDdl := "CREATE TABLE IF NOT EXISTS TEST_WITH_JSON_STRUCT_TAG (ID INTEGER, INT64_FIELD BIGINT NOT NULL, INT_FIELD INTEGER NOT NULL, STRING_FIELD TEXT NOT NULL, CONSTRAINT pk_test_with_json_struct_tag PRIMARY KEY(ID));"
if ddl != expectedDdl {
log.LogError("Incorrect DDL.\nExpected\n%s\nActual\n%s", expectedDdl, ddl)
log.LogError("\nExpected size: %s\nActual size: %s", strconv.Itoa(len(expectedDdl)), strconv.Itoa(len(ddl)))
t.Fail()
}
log.LogInfo("Test finished!")
}