github.com/simonferquel/app@v0.6.1-0.20181012141724-68b7cccf26ac/types/settings/merge_test.go (about)

     1  package settings
     2  
     3  import (
     4  	"testing"
     5  
     6  	"gotest.tools/assert"
     7  	is "gotest.tools/assert/cmp"
     8  )
     9  
    10  func TestMergeSliceError(t *testing.T) {
    11  	m1 := map[string]interface{}{
    12  		"baz": []string{"a", "b"},
    13  	}
    14  	m2 := map[string]interface{}{
    15  		"baz": []int{1},
    16  	}
    17  	_, err := Merge(m1, m2)
    18  	assert.Check(t, is.ErrorContains(err, "cannot append two slice with different type"))
    19  }
    20  
    21  func TestMerge(t *testing.T) {
    22  	m1 := map[string]interface{}{
    23  		"foo": "bar",
    24  		"bar": map[string]interface{}{
    25  			"baz":  "banana",
    26  			"port": "80",
    27  		},
    28  		"baz": []string{"a", "b"},
    29  	}
    30  	m2 := map[string]interface{}{
    31  		"bar": map[string]interface{}{
    32  			"baz":  "biz",
    33  			"port": "10",
    34  			"foo":  "toto",
    35  		},
    36  		"baz":    []string{"c"},
    37  		"banana": "monkey",
    38  	}
    39  	m3, err := FromFlatten(map[string]string{
    40  		"bar.baz": "boz",
    41  	})
    42  	assert.NilError(t, err)
    43  	settings, err := Merge(m1, m2, m3)
    44  	assert.NilError(t, err)
    45  	assert.Check(t, is.DeepEqual(settings.Flatten(), map[string]string{
    46  		"foo":      "bar",
    47  		"bar.baz":  "boz",
    48  		"bar.port": "10",
    49  		"bar.foo":  "toto",
    50  		"baz.0":    "c",
    51  		"banana":   "monkey",
    52  	}))
    53  }