evcc-io/plugin/pipeline/pipeline_test.go

51 lines
1 KiB
Go

package pipeline
import (
"fmt"
"testing"
"github.com/stretchr/testify/require"
)
func TestRegex(t *testing.T) {
for _, re := range []string{`([0-9.]+)`, `[0-9.]+`} {
p, err := new(Pipeline).WithRegex(re, "")
require.NoError(t, err)
res, err := p.Process([]byte("12.3W"))
require.NoError(t, err)
require.Equal(t, []byte("12.3"), res)
}
}
func TestRegexDefault(t *testing.T) {
p, err := new(Pipeline).WithRegex(`\d+`, "123")
require.NoError(t, err)
res, err := p.Process([]byte("xxx"))
require.NoError(t, err)
require.Equal(t, []byte("123"), res)
}
func TestJq(t *testing.T) {
for _, uuid := range []string{"a8232ee0-a4ab-11ec-8d36-211f6b082dc8", "08232ee0-a4ab-11ec-8d36-211f6b082dc8"} {
p, err := new(Pipeline).WithJq(fmt.Sprintf(`.data[] | select(.uuid=="%s") | .tuples[0][1]`, uuid))
require.NoError(t, err)
res, err := p.Process([]byte(`
{
"data": [
{
"uuid": "` + uuid + `",
"tuples": [[1,2,3]]
}
]
}
`))
require.NoError(t, err)
require.Equal(t, []byte("2"), res)
}
}