Something went wrong on our end
-
Volker Schukai authoredVolker Schukai authored
issue_7_test.go 1.66 KiB
package pathfinder
import (
"github.com/stretchr/testify/assert"
"testing"
)
// Test für SetValue
func TestSetValue(t *testing.T) {
type Inner struct {
Field PathValue
}
type Outer struct {
InnerField *Inner
}
obj := &Outer{
InnerField: &Inner{
Field: "oldValue",
},
}
v, err := GetValue[Outer](*obj, "InnerField.Field")
if err != nil {
t.Error(err)
}
assert.Equal(t, v, PathValue("oldValue"))
nv := PathValue("newValue")
err = SetValue[*Outer](obj, "InnerField.Field", nv)
if err != nil {
t.Fatalf("unexpected error: %v", err)
}
if obj.InnerField.Field != "newValue" {
t.Fatalf("expected newValue, got: %s", obj.InnerField.Field)
}
v, err = GetValue[Outer](*obj, "InnerField.Field")
if err != nil {
t.Error(err)
}
assert.Equal(t, v, nv)
}
type Issue7Routing struct {
P PathValue `json:"p" yaml:"p"`
X string `json:"x" yaml:"x"`
}
type Issue7Server struct {
Routing []Issue7Routing `json:"routing" yaml:"routing"`
}
type Issue7Config struct {
Server Issue7Server `json:"server" yaml:"server"`
}
func TestPathRewrite(t *testing.T) {
obj := Issue7Config{
Server: Issue7Server{
Routing: []Issue7Routing{
{
P: "./test",
X: "testX",
},
},
},
}
v, err := GetValue[*Issue7Config](&obj, "Server.Routing.0.P")
assert.Nil(t, err)
assert.Equal(t, v, PathValue("./test"))
nv := PathValue("newValue")
err = SetValue[*Issue7Config](&obj, "Server.Routing.0.P", nv)
assert.Nil(t, err)
if obj.Server.Routing[0].P != "newValue" {
t.Fatalf("expected newValue, got: %s", obj.Server.Routing[0].P)
}
v, err = GetValue[*Issue7Config](&obj, "Server.Routing.0.P")
assert.Nil(t, err)
assert.Equal(t, v, nv)
}