github.com/uchennaokeke444/nomad@v0.11.8/nomad/structs/config/plugins_test.go (about)

     1  package config
     2  
     3  import (
     4  	"sort"
     5  	"testing"
     6  
     7  	"github.com/stretchr/testify/require"
     8  )
     9  
    10  func TestPluginConfig_Merge(t *testing.T) {
    11  	t.Parallel()
    12  	require := require.New(t)
    13  	a := &PluginConfig{
    14  		Name: "foo",
    15  		Args: []string{"bar"},
    16  		Config: map[string]interface{}{
    17  			"baz": true,
    18  		},
    19  	}
    20  
    21  	e1 := &PluginConfig{
    22  		Name: "replaced",
    23  		Args: []string{"bar"},
    24  		Config: map[string]interface{}{
    25  			"baz": true,
    26  		},
    27  	}
    28  	o1 := a.Merge(&PluginConfig{Name: "replaced"})
    29  	require.Equal(e1, o1)
    30  
    31  	e2 := &PluginConfig{
    32  		Name: "foo",
    33  		Args: []string{"replaced", "another"},
    34  		Config: map[string]interface{}{
    35  			"baz": true,
    36  		},
    37  	}
    38  	o2 := a.Merge(&PluginConfig{
    39  		Args: []string{"replaced", "another"},
    40  	})
    41  	require.Equal(e2, o2)
    42  
    43  	e3 := &PluginConfig{
    44  		Name: "foo",
    45  		Args: []string{"bar"},
    46  		Config: map[string]interface{}{
    47  			"replaced": 1,
    48  		},
    49  	}
    50  	o3 := a.Merge(&PluginConfig{
    51  		Config: map[string]interface{}{
    52  			"replaced": 1,
    53  		},
    54  	})
    55  	require.Equal(e3, o3)
    56  }
    57  
    58  func TestPluginConfigSet_Merge(t *testing.T) {
    59  	t.Parallel()
    60  	require := require.New(t)
    61  
    62  	a := &PluginConfig{
    63  		Name: "a",
    64  		Args: []string{"a1"},
    65  		Config: map[string]interface{}{
    66  			"a1": true,
    67  		},
    68  	}
    69  	b1 := &PluginConfig{
    70  		Name: "b",
    71  		Args: []string{"b1"},
    72  		Config: map[string]interface{}{
    73  			"b1": true,
    74  		},
    75  	}
    76  	b2 := &PluginConfig{
    77  		Name: "b",
    78  		Args: []string{"b2"},
    79  		Config: map[string]interface{}{
    80  			"b2": true,
    81  		},
    82  	}
    83  	c := &PluginConfig{
    84  		Name: "c",
    85  		Args: []string{"c"},
    86  		Config: map[string]interface{}{
    87  			"c1": true,
    88  		},
    89  	}
    90  
    91  	s1 := []*PluginConfig{a, b1}
    92  	s2 := []*PluginConfig{b2, c}
    93  
    94  	out := PluginConfigSetMerge(s1, s2)
    95  	sort.Slice(out, func(i, j int) bool {
    96  		return out[i].Name < out[j].Name
    97  	})
    98  
    99  	expected := []*PluginConfig{a, b2, c}
   100  	require.EqualValues(expected, out)
   101  }