90 lines
3.6 KiB
Go
90 lines
3.6 KiB
Go
package simpleorm_test
|
|
|
|
import (
|
|
"simpleorm"
|
|
"strconv"
|
|
"testing"
|
|
|
|
log "gitlab.com/gdulai/simpleloglvl"
|
|
)
|
|
|
|
func TestParseSimple(t *testing.T) {
|
|
log.LogInfo("Test start...")
|
|
// GIVEN
|
|
orm := simpleorm.NewORM(Test{})
|
|
// WHEN
|
|
ddl := orm.CreateDDL()
|
|
// THEN
|
|
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 := orm.CreateDDL()
|
|
// THEN
|
|
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
|
|
ddl := orm.CreateDDL()
|
|
// THEN
|
|
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 := orm.CreateDDL()
|
|
// THEN
|
|
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 := orm.CreateDDL()
|
|
// THEN
|
|
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()
|
|
}
|
|
}
|