diff options
| author | Dave Henderson <dhenderson@gmail.com> | 2019-04-06 09:04:01 -0400 |
|---|---|---|
| committer | Dave Henderson <dhenderson@gmail.com> | 2019-04-06 09:19:30 -0400 |
| commit | 6ee72aa0651bc0e6a5bce2c9ee5bd5c7fcd82558 (patch) | |
| tree | 02ea9039aaa3e9d1cb2e64cd0bac09aa7cd2aad7 /data/datasource_merge_test.go | |
| parent | e840d960599e434f61683013ea6528cc3e07d269 (diff) | |
Fixing merge behaviour for booleans
Signed-off-by: Dave Henderson <dhenderson@gmail.com>
Diffstat (limited to 'data/datasource_merge_test.go')
| -rw-r--r-- | data/datasource_merge_test.go | 78 |
1 files changed, 68 insertions, 10 deletions
diff --git a/data/datasource_merge_test.go b/data/datasource_merge_test.go index 0cd86574..b08148d5 100644 --- a/data/datasource_merge_test.go +++ b/data/datasource_merge_test.go @@ -10,23 +10,23 @@ import ( ) func TestReadMerge(t *testing.T) { - jsonContent := []byte(`{"hello": "world"}`) - yamlContent := []byte("hello: earth\ngoodnight: moon\n") - arrayContent := []byte(`["hello", "world"]`) + jsonContent := `{"hello": "world"}` + yamlContent := "hello: earth\ngoodnight: moon\n" + arrayContent := `["hello", "world"]` - mergedContent := []byte("goodnight: moon\nhello: world\n") + mergedContent := "goodnight: moon\nhello: world\n" fs := afero.NewMemMapFs() _ = fs.Mkdir("/tmp", 0777) f, _ := fs.Create("/tmp/jsonfile.json") - _, _ = f.Write(jsonContent) + _, _ = f.WriteString(jsonContent) f, _ = fs.Create("/tmp/array.json") - _, _ = f.Write(arrayContent) + _, _ = f.WriteString(arrayContent) f, _ = fs.Create("/tmp/yamlfile.yaml") - _, _ = f.Write(yamlContent) + _, _ = f.WriteString(yamlContent) f, _ = fs.Create("/tmp/textfile.txt") - _, _ = f.Write([]byte(`plain text...`)) + _, _ = f.WriteString(`plain text...`) source := &Source{Alias: "foo", URL: mustParseURL("merge:file:///tmp/jsonfile.json|file:///tmp/yamlfile.yaml")} source.fs = fs @@ -44,12 +44,12 @@ func TestReadMerge(t *testing.T) { actual, err := d.readMerge(source) assert.NoError(t, err) - assert.Equal(t, mergedContent, actual) + assert.Equal(t, mergedContent, string(actual)) source.URL = mustParseURL("merge:bar|baz") actual, err = d.readMerge(source) assert.NoError(t, err) - assert.Equal(t, mergedContent, actual) + assert.Equal(t, mergedContent, string(actual)) source.URL = mustParseURL("merge:file:///tmp/jsonfile.json") _, err = d.readMerge(source) @@ -71,3 +71,61 @@ func TestReadMerge(t *testing.T) { _, err = d.readMerge(source) assert.Error(t, err) } + +func TestMergeData(t *testing.T) { + def := map[string]interface{}{ + "f": true, + "t": false, + "z": "def", + } + out, err := mergeData([]map[string]interface{}{def}) + assert.NoError(t, err) + assert.Equal(t, "f: true\nt: false\nz: def\n", string(out)) + + over := map[string]interface{}{ + "f": false, + "t": true, + "z": "over", + } + out, err = mergeData([]map[string]interface{}{over, def}) + assert.NoError(t, err) + assert.Equal(t, "f: false\nt: true\nz: over\n", string(out)) + + over = map[string]interface{}{ + "f": false, + "t": true, + "z": "over", + "m": map[string]interface{}{ + "a": "aaa", + }, + } + out, err = mergeData([]map[string]interface{}{over, def}) + assert.NoError(t, err) + assert.Equal(t, "f: false\nm:\n a: aaa\nt: true\nz: over\n", string(out)) + + uber := map[string]interface{}{ + "z": "über", + } + out, err = mergeData([]map[string]interface{}{uber, over, def}) + assert.NoError(t, err) + assert.Equal(t, "f: false\nm:\n a: aaa\nt: true\nz: über\n", string(out)) + + uber = map[string]interface{}{ + "m": "notamap", + "z": map[string]interface{}{ + "b": "bbb", + }, + } + out, err = mergeData([]map[string]interface{}{uber, over, def}) + assert.NoError(t, err) + assert.Equal(t, "f: false\nm: notamap\nt: true\nz:\n b: bbb\n", string(out)) + + uber = map[string]interface{}{ + "m": map[string]interface{}{ + "b": "bbb", + }, + } + out, err = mergeData([]map[string]interface{}{uber, over, def}) + assert.NoError(t, err) + assert.Equal(t, "f: false\nm:\n a: aaa\n b: bbb\nt: true\nz: over\n", string(out)) +} |
