From bea828d64d0bdf348e370d9ed4b48d685a369e1e Mon Sep 17 00:00:00 2001 From: go-jet Date: Sun, 23 Jul 2023 17:58:33 +0200 Subject: [PATCH] Add additional generator template tests: - TestRenameEnumValueName - TestGeneratorTemplate_Model_SqlBuilder_RenameStructFieldNames test. --- tests/postgres/generator_template_test.go | 102 ++++++++++++++++++++++ tests/testdata | 2 +- 2 files changed, 103 insertions(+), 1 deletion(-) diff --git a/tests/postgres/generator_template_test.go b/tests/postgres/generator_template_test.go index db788ee..4f2f0da 100644 --- a/tests/postgres/generator_template_test.go +++ b/tests/postgres/generator_template_test.go @@ -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,") +} diff --git a/tests/testdata b/tests/testdata index c17c7dd..3398b97 160000 --- a/tests/testdata +++ b/tests/testdata @@ -1 +1 @@ -Subproject commit c17c7dd9b29882499e8d22078e6c5ea098581aec +Subproject commit 3398b9735b9d097d2ee0c282976726affc6b96f0