mold-optional-playground/optional_test.go

43 lines
907 B
Go
Raw Permalink Normal View History

package playground
import (
"context"
"log"
"reflect"
"testing"
"github.com/go-playground/assert/v2"
"github.com/go-playground/mold/v4"
"github.com/go-playground/mold/v4/modifiers"
"github.com/moznion/go-optional"
)
var tform *mold.Transformer
type UpdateCustomerDTO struct {
FirstName optional.Option[string] `mod:"trim"`
}
func TestMoldTrimOnOptional(t *testing.T) {
tform = modifiers.New()
tform.RegisterInterceptor(func(current reflect.Value) (inner reflect.Value) {
opt, ok := current.Interface().(optional.Option[string])
if !ok {
return current
} else if opt.IsNone() {
return reflect.ValueOf(nil)
}
return current.Index(0)
}, optional.Option[string]{})
dto := UpdateCustomerDTO{FirstName: optional.Some(" RaviAnand ")}
err := tform.Struct(context.Background(), &dto)
if err != nil {
log.Fatal(err)
}
assert.Equal(t, dto.FirstName.Unwrap(), "RaviAnand")
}