49 lines
851 B
Go
49 lines
851 B
Go
package jsonnet_test
|
|
|
|
import (
|
|
"strings"
|
|
"testing"
|
|
|
|
"github.com/stretchr/testify/assert"
|
|
|
|
"github.com/influxdata/influxdb/v2/pkg/jsonnet"
|
|
"github.com/stretchr/testify/require"
|
|
)
|
|
|
|
func TestDecoder(t *testing.T) {
|
|
type (
|
|
person struct {
|
|
Name string `json:"name"`
|
|
Welcome string `json:"welcome"`
|
|
}
|
|
|
|
persons struct {
|
|
Person1 person `json:"person1"`
|
|
Person2 person `json:"person2"`
|
|
}
|
|
)
|
|
|
|
const entry = `{
|
|
person1: {
|
|
name: "Alice",
|
|
welcome: "Hello " + self.name + "!",
|
|
},
|
|
person2: self.person1 { name: "Bob" },
|
|
}`
|
|
|
|
var out persons
|
|
require.NoError(t, jsonnet.NewDecoder(strings.NewReader(entry)).Decode(&out))
|
|
|
|
expected := persons{
|
|
Person1: person{
|
|
Name: "Alice",
|
|
Welcome: "Hello Alice!",
|
|
},
|
|
Person2: person{
|
|
Name: "Bob",
|
|
Welcome: "Hello Bob!",
|
|
},
|
|
}
|
|
assert.Equal(t, expected, out)
|
|
}
|