add more tests for ElementSetter

This commit is contained in:
Donny Xia
2020-11-03 15:23:34 -08:00
parent 3fed68b694
commit 6bed275234
2 changed files with 51 additions and 3 deletions

View File

@@ -116,6 +116,55 @@ func TestElementSetter(t *testing.T) {
- c: d
`, assertNoErrorString(t)(node.String()))
node = orig.Copy()
// Nothing happens because no element is matched
rn, err = node.Pipe(ElementSetter{Key: "a", Value: "zebra"})
assert.NoError(t, err)
assert.Nil(t, rn)
assert.Equal(t, `- a: b
- scalarValue
- c: d
`, assertNoErrorString(t)(node.String()))
node = orig.Copy()
// Return error because ElementSetter doesn't support a single key
// when there is a scalar value in the list
rn, err = node.Pipe(ElementSetter{Key: "a"})
assert.EqualError(t, err, "wrong Node Kind for expected: MappingNode was ScalarNode: value: {scalarValue}")
node = MustParse(`
- a: b
- c: d
`)
// {a: b} is removed since the value is omitted and only key is used
// to match and no Element specified.
rn, err = node.Pipe(ElementSetter{Key: "a"})
assert.NoError(t, err)
assert.Nil(t, rn)
assert.Equal(t, `- c: d
`, assertNoErrorString(t)(node.String()))
node = MustParse(`
- a: b
- c: d
`)
// Return error because ElementSetter will assume all elements are scalar when
// there is only value provided.
rn, err = node.Pipe(ElementSetter{Value: "b"})
assert.EqualError(t, err, "wrong Node Kind for expected: ScalarNode was MappingNode: value: {a: b}")
node = MustParse(`
- a
- b
`)
// b is removed since ElementSetter use the value "b" to match the
// scalar values.
rn, err = node.Pipe(ElementSetter{Value: "b"})
assert.NoError(t, err)
assert.Nil(t, rn)
assert.Equal(t, `- a
`, assertNoErrorString(t)(node.String()))
node = orig.Copy()
// Set an element, replacing 'a: b' with 'e: f'
newElement := NewMapRNode(&map[string]string{