Add additional generator template tests:

- TestRenameEnumValueName
 - TestGeneratorTemplate_Model_SqlBuilder_RenameStructFieldNames test.
This commit is contained in:
go-jet 2023-07-23 17:58:33 +02:00
parent aace1156ba
commit bea828d64d
2 changed files with 103 additions and 1 deletions

View file

@ -20,6 +20,7 @@ import (
const tempTestDir = "./.tempTestDir"
var defaultModelPath = path.Join(tempTestDir, "jetdb/dvds/model")
var defaultSqlBuilderPath = path.Join(tempTestDir, "jetdb/dvds/table")
var defaultActorModelFilePath = path.Join(tempTestDir, "jetdb/dvds/model", "actor.go")
var defaultTableSQLBuilderFilePath = path.Join(tempTestDir, "jetdb/dvds/table")
var defaultViewSQLBuilderFilePath = path.Join(tempTestDir, "jetdb/dvds/view")
@ -454,3 +455,104 @@ func TestGeneratorTemplate_SQLBuilder_ChangeColumnTypes(t *testing.T) {
actor := file2.Exists(t, defaultActorSQLBuilderFilePath)
require.Contains(t, actor, "ActorID postgres.ColumnString")
}
func TestRenameEnumValueName(t *testing.T) {
err := postgres.Generate(
tempTestDir,
dbConnection,
template.Default(postgres2.Dialect).
UseSchema(func(schemaMetaData metadata.Schema) template.Schema {
return template.DefaultSchema(schemaMetaData).
UseSQLBuilder(template.DefaultSQLBuilder().
UseEnum(func(enum metadata.Enum) template.EnumSQLBuilder {
defaultEnumSqlBuilder := template.DefaultEnumSQLBuilder(enum)
defaultValueNameFunc := defaultEnumSqlBuilder.ValueName
defaultEnumSqlBuilder.ValueName = func(enumValue string) string {
if enumValue == "G" {
return "GRating"
}
return defaultValueNameFunc(enumValue)
}
return defaultEnumSqlBuilder
}),
)
}),
)
require.NoError(t, err)
testutils.AssertFileContent(t, defaultEnumSQLBuilderFilePath+"/mpaa_rating.go", `
//
// Code generated by go-jet DO NOT EDIT.
//
// WARNING: Changes to this file may cause incorrect behavior
// and will be lost if the code is regenerated
//
package enum
import "github.com/go-jet/jet/v2/postgres"
var MpaaRating = &struct {
GRating postgres.StringExpression
Pg postgres.StringExpression
Pg13 postgres.StringExpression
R postgres.StringExpression
Nc17 postgres.StringExpression
}{
GRating: postgres.NewEnumValue("G"),
Pg: postgres.NewEnumValue("PG"),
Pg13: postgres.NewEnumValue("PG-13"),
R: postgres.NewEnumValue("R"),
Nc17: postgres.NewEnumValue("NC-17"),
}
`)
}
func TestGeneratorTemplate_Model_SqlBuilder_RenameStructFieldNames(t *testing.T) {
err := postgres.Generate(
tempTestDir,
dbConnection,
template.Default(postgres2.Dialect).
UseSchema(func(schemaMetaData metadata.Schema) template.Schema {
return template.DefaultSchema(schemaMetaData).
UseModel(template.DefaultModel().
UseTable(func(table metadata.Table) template.TableModel {
return template.DefaultTableModel(table).
UseField(func(column metadata.Column) template.TableModelField {
defaultTableModelField := template.DefaultTableModelField(column)
if table.Name == "payment" && column.Name == "amount" {
defaultTableModelField.Name = "AmountInCents"
}
return defaultTableModelField
})
}),
).
UseSQLBuilder(template.DefaultSQLBuilder().
UseTable(func(table metadata.Table) template.TableSQLBuilder {
return template.DefaultTableSQLBuilder(table).
UseColumn(func(column metadata.Column) template.TableSQLBuilderColumn {
defaultSqlBuilderColumn := template.DefaultTableSQLBuilderColumn(column)
if table.Name == "payment" && column.Name == "amount" {
defaultSqlBuilderColumn.Name = "AmountInCents"
}
return defaultSqlBuilderColumn
})
}),
)
}),
)
require.NoError(t, err)
filmModelData := file2.Exists(t, defaultModelPath, "payment.go")
require.Contains(t, filmModelData, "AmountInCents float64")
filmSqlBuilderData := file2.Exists(t, defaultSqlBuilderPath, "payment.go")
require.Contains(t, filmSqlBuilderData, "AmountInCents postgres.ColumnFloat")
require.Contains(t, filmSqlBuilderData, "AmountInCentsColumn = postgres.FloatColumn(\"amount\")")
require.Contains(t, filmSqlBuilderData, "allColumns = postgres.ColumnList{PaymentIDColumn, CustomerIDColumn, StaffIDColumn, RentalIDColumn, AmountInCentsColumn, PaymentDateColumn}")
require.Contains(t, filmSqlBuilderData, "AmountInCents: AmountInCentsColumn,")
}

@ -1 +1 @@
Subproject commit c17c7dd9b29882499e8d22078e6c5ea098581aec
Subproject commit 3398b9735b9d097d2ee0c282976726affc6b96f0