From be327e744380573663a41912e9614732061436ef Mon Sep 17 00:00:00 2001 From: Donny Xia Date: Tue, 3 Nov 2020 11:54:44 -0800 Subject: [PATCH] add tests for ElementSetter --- kyaml/yaml/fns_test.go | 70 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 70 insertions(+) diff --git a/kyaml/yaml/fns_test.go b/kyaml/yaml/fns_test.go index e7dda5f71..046e6e370 100644 --- a/kyaml/yaml/fns_test.go +++ b/kyaml/yaml/fns_test.go @@ -97,6 +97,76 @@ func TestGetElementByKey(t *testing.T) { assert.Equal(t, "f: g\n", assertNoErrorString(t)(rn.String())) } +func TestElementSetter(t *testing.T) { + orig := MustParse(` +- a: b +- scalarValue +- c: d +# null will be removed +- null +`) + + // ElementSetter will update node, so make a copy + node := orig.Copy() + // Remove an element + rn, err := node.Pipe(ElementSetter{Key: "a", Value: "b"}) + assert.NoError(t, err) + assert.Nil(t, rn) + assert.Equal(t, `- scalarValue +- c: d +`, assertNoErrorString(t)(node.String())) + + node = orig.Copy() + // Set an element + newElement := NewMapRNode(&map[string]string{ + "e": "f", + }) + rn, err = node.Pipe(ElementSetter{ + Key: "a", + Value: "b", + Element: newElement.YNode(), + }) + assert.NoError(t, err) + assert.Equal(t, rn, newElement) + assert.Equal(t, `- e: f +- scalarValue +- c: d +`, assertNoErrorString(t)(node.String())) + + node = orig.Copy() + // Set an element with scalar + newElement = NewScalarRNode("foo") + rn, err = node.Pipe(ElementSetter{ + Key: "a", + Value: "b", + Element: newElement.YNode(), + }) + assert.NoError(t, err) + assert.Equal(t, rn, newElement) + assert.Equal(t, `- foo +- scalarValue +- c: d +`, assertNoErrorString(t)(node.String())) + + node = orig.Copy() + // Append an element + newElement = NewMapRNode(&map[string]string{ + "e": "f", + }) + rn, err = node.Pipe(ElementSetter{ + Key: "x", + Value: "y", + Element: newElement.YNode(), + }) + assert.NoError(t, err) + assert.Equal(t, rn, newElement) + assert.Equal(t, `- a: b +- scalarValue +- c: d +- e: f +`, assertNoErrorString(t)(node.String())) +} + func TestElementMatcherWithNoValue(t *testing.T) { node, err := Parse(` - a: c