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() } }