* update default value quoting logic for PostgreSQL * add tests for array default value handling
55 lines
1.1 KiB
Go
55 lines
1.1 KiB
Go
package writers
|
|
|
|
import "testing"
|
|
|
|
func TestQuoteDefaultValue(t *testing.T) {
|
|
t.Parallel()
|
|
|
|
tests := []struct {
|
|
name string
|
|
value string
|
|
sqlType string
|
|
want string
|
|
}{
|
|
{
|
|
name: "text default is quoted",
|
|
value: "active",
|
|
sqlType: "text",
|
|
want: "'active'",
|
|
},
|
|
{
|
|
name: "array default from bare literal is quoted once",
|
|
value: "{}",
|
|
sqlType: "text[]",
|
|
want: "'{}'",
|
|
},
|
|
{
|
|
name: "array default from quoted literal is preserved",
|
|
value: "'{}'",
|
|
sqlType: "text[]",
|
|
want: "'{}'",
|
|
},
|
|
{
|
|
name: "array default from double quoted literal is normalized",
|
|
value: "''{}''",
|
|
sqlType: "text[]",
|
|
want: "'{}'",
|
|
},
|
|
{
|
|
name: "function default is left alone",
|
|
value: "now()",
|
|
sqlType: "timestamptz",
|
|
want: "now()",
|
|
},
|
|
}
|
|
|
|
for _, tt := range tests {
|
|
t.Run(tt.name, func(t *testing.T) {
|
|
got := QuoteDefaultValue(tt.value, tt.sqlType)
|
|
if got != tt.want {
|
|
t.Fatalf("QuoteDefaultValue(%q, %q) = %q, want %q", tt.value, tt.sqlType, got, tt.want)
|
|
}
|
|
})
|
|
}
|
|
}
|