Add more UseSchema tests.

Rename newly generated file to avoid potentional conflict with tables named table or views named view.
This commit is contained in:
go-jet 2023-04-02 13:58:44 +02:00
parent a9aa25416a
commit 5e34bef288
10 changed files with 250 additions and 160 deletions

View file

@ -7,6 +7,7 @@ import (
"github.com/go-jet/jet/v2/generator/postgres"
"github.com/go-jet/jet/v2/generator/template"
"github.com/go-jet/jet/v2/internal/3rdparty/snaker"
"github.com/go-jet/jet/v2/internal/testutils"
"github.com/go-jet/jet/v2/internal/utils"
postgres2 "github.com/go-jet/jet/v2/postgres"
"github.com/go-jet/jet/v2/tests/dbconfig"
@ -207,28 +208,65 @@ func TestGeneratorTemplate_SQLBuilder_SkipTableAndEnum(t *testing.T) {
return template.DefaultSchema(schemaMetaData).
UseSQLBuilder(template.DefaultSQLBuilder().
UseTable(func(table metadata.Table) template.TableSQLBuilder {
return template.TableSQLBuilder{
Skip: true,
if table.Name != "city" {
return template.TableSQLBuilder{Skip: true}
}
return template.DefaultTableSQLBuilder(table)
}).
UseView(func(table metadata.Table) template.TableSQLBuilder {
return template.TableSQLBuilder{
Skip: true,
UseView(func(view metadata.Table) template.ViewSQLBuilder {
if view.Name != "film_list" {
return template.TableSQLBuilder{Skip: true}
}
return template.DefaultViewSQLBuilder(view)
}).
UseEnum(func(enumMetaData metadata.Enum) template.EnumSQLBuilder {
return template.EnumSQLBuilder{
Skip: true,
}
return template.EnumSQLBuilder{Skip: true}
}),
)
}),
)
require.Nil(t, err)
file2.NotExists(t, defaultTableSQLBuilderFilePath, "actor.go")
file2.NotExists(t, defaultViewSQLBuilderFilePath, "actor_info.go")
testutils.AssertFileNamesEqual(t, defaultTableSQLBuilderFilePath, "city.go", "table_use_schema.go")
testutils.AssertFileNamesEqual(t, defaultViewSQLBuilderFilePath, "film_list.go", "view_use_schema.go")
file2.NotExists(t, defaultEnumSQLBuilderFilePath, "mpaa_rating.go")
testutils.AssertFileContent(t, defaultTableSQLBuilderFilePath+"/table_use_schema.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 table
// UseSchema sets a new schema name for all generated table SQL builder types. It is recommended to invoke
// this method only once at the beginning of the program.
func UseSchema(schema string) {
City = City.FromSchema(schema)
}
`)
testutils.AssertFileContent(t, defaultViewSQLBuilderFilePath+"/view_use_schema.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 view
// UseSchema sets a new schema name for all generated view SQL builder types. It is recommended to invoke
// this method only once at the beginning of the program.
func UseSchema(schema string) {
FilmList = FilmList.FromSchema(schema)
}
`)
}
func TestGeneratorTemplate_SQLBuilder_ChangeTypeAndFileName(t *testing.T) {
@ -269,6 +307,37 @@ func TestGeneratorTemplate_SQLBuilder_ChangeTypeAndFileName(t *testing.T) {
require.Contains(t, actorInfo, "var V_ActorInfo = newActorInfoViewSQLBuilder(\"dvds\", \"actor_info\", \"\")")
mpaaRating := file2.Exists(t, defaultEnumSQLBuilderFilePath, "dvds_mpaa_rating_enum.go")
require.Contains(t, mpaaRating, "var MpaaRatingEnumSQLBuilder = &struct {")
testutils.AssertFileContent(t, defaultTableSQLBuilderFilePath+"/table_use_schema.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 table
// UseSchema sets a new schema name for all generated table SQL builder types. It is recommended to invoke
// this method only once at the beginning of the program.
func UseSchema(schema string) {
T_Actor = T_Actor.FromSchema(schema)
T_Address = T_Address.FromSchema(schema)
T_Category = T_Category.FromSchema(schema)
T_City = T_City.FromSchema(schema)
T_Country = T_Country.FromSchema(schema)
T_Customer = T_Customer.FromSchema(schema)
T_Film = T_Film.FromSchema(schema)
T_FilmActor = T_FilmActor.FromSchema(schema)
T_FilmCategory = T_FilmCategory.FromSchema(schema)
T_Inventory = T_Inventory.FromSchema(schema)
T_Language = T_Language.FromSchema(schema)
T_Payment = T_Payment.FromSchema(schema)
T_Rental = T_Rental.FromSchema(schema)
T_Staff = T_Staff.FromSchema(schema)
T_Store = T_Store.FromSchema(schema)
}
`)
}
func TestGeneratorTemplate_Model_AddTags(t *testing.T) {