1
0
mirror of https://github.com/TomWright/dasel.git synced 2022-05-22 02:32:45 +03:00
Files
dasel-data-selector/internal/storage/yaml_test.go
Tom Wright d140860fea Add multi value selector. (#34)
Select/Put multiple values in one query
2020-11-08 23:36:47 +00:00

80 lines
1.8 KiB
Go

package storage_test
import (
"github.com/tomwright/dasel/internal/storage"
"reflect"
"strings"
"testing"
)
var yamlBytes = []byte(`name: Tom
`)
var yamlMap = map[interface{}]interface{}{
"name": "Tom",
}
func TestYAMLParser_FromBytes(t *testing.T) {
t.Run("Valid", func(t *testing.T) {
got, err := (&storage.YAMLParser{}).FromBytes(yamlBytes)
if err != nil {
t.Errorf("unexpected error: %s", err)
return
}
exp := &storage.YAMLSingleDocument{Value: yamlMap}
if !reflect.DeepEqual(exp, got) {
t.Errorf("expected %v, got %v", exp, got)
}
})
t.Run("ValidMultiDocument", func(t *testing.T) {
got, err := (&storage.YAMLParser{}).FromBytes([]byte(`
name: Tom
---
name: Jim
`))
if err != nil {
t.Errorf("unexpected error: %s", err)
return
}
exp := &storage.YAMLMultiDocument{Values: []interface{}{
map[interface{}]interface{}{
"name": "Tom",
},
map[interface{}]interface{}{
"name": "Jim",
},
}}
if !reflect.DeepEqual(exp, got) {
t.Errorf("expected %v, got %v", exp, got)
}
})
t.Run("Invalid", func(t *testing.T) {
_, err := (&storage.YAMLParser{}).FromBytes([]byte(`{1:asd`))
if err == nil || !strings.Contains(err.Error(), "could not unmarshal config data") {
t.Errorf("unexpected error: %v", err)
return
}
})
t.Run("Empty", func(t *testing.T) {
got, err := (&storage.YAMLParser{}).FromBytes([]byte(``))
if err != nil {
t.Errorf("unexpected error: %s", err)
return
}
if !reflect.DeepEqual(nil, got) {
t.Errorf("expected %v, got %v", nil, got)
}
})
}
func TestYAMLParser_ToBytes(t *testing.T) {
got, err := (&storage.YAMLParser{}).ToBytes(yamlMap)
if err != nil {
t.Errorf("unexpected error: %s", err)
return
}
if string(yamlBytes) != string(got) {
t.Errorf("expected %s, got %s", yamlBytes, got)
}
}