ECS provider refactoring

This commit is contained in:
Michael 2017-09-06 12:10:05 +02:00 committed by Traefiker
parent b0a0e16136
commit 9ce4f94818
4 changed files with 420 additions and 183 deletions

View file

@ -1,80 +1,144 @@
package ecs
import (
"reflect"
"github.com/stretchr/testify/assert"
"testing"
)
func TestClustersSet(t *testing.T) {
checkMap := map[string]Clusters{
"cluster": {"cluster"},
"cluster1,cluster2": {"cluster1", "cluster2"},
"cluster1;cluster2": {"cluster1", "cluster2"},
"cluster1,cluster2;cluster3": {"cluster1", "cluster2", "cluster3"},
tests := []struct {
desc string
value string
expected Clusters
}{
{
desc: "One value should return Clusters of size 1",
value: "cluster",
expected: Clusters{"cluster"},
},
{
desc: "Two values separated by comma should return Clusters of size 2",
value: "cluster1,cluster2",
expected: Clusters{"cluster1", "cluster2"},
},
{
desc: "Two values separated by semicolon should return Clusters of size 2",
value: "cluster1;cluster2",
expected: Clusters{"cluster1", "cluster2"},
},
{
desc: "Three values separated by comma and semicolon should return Clusters of size 3",
value: "cluster1,cluster2;cluster3",
expected: Clusters{"cluster1", "cluster2", "cluster3"},
},
}
for str, check := range checkMap {
var clusters Clusters
if err := clusters.Set(str); err != nil {
t.Fatalf("Error :%s", err)
}
if !reflect.DeepEqual(clusters, check) {
t.Fatalf("Expected:%s\ngot:%s", check, clusters)
}
for _, test := range tests {
test := test
t.Run(test.desc, func(t *testing.T) {
t.Parallel()
var clusters Clusters
err := clusters.Set(test.value)
assert.Nil(t, err)
assert.Equal(t, test.expected, clusters)
})
}
}
func TestClustersGet(t *testing.T) {
slices := []Clusters{
{"cluster"},
{"cluster1", "cluster2"},
{"cluster1", "cluster2", "cluster3"},
tests := []struct {
desc string
clusters Clusters
expected Clusters
}{
{
desc: "Should return 1 cluster",
clusters: Clusters{"cluster"},
expected: Clusters{"cluster"},
},
{
desc: "Should return 2 clusters",
clusters: Clusters{"cluster1", "cluster2"},
expected: Clusters{"cluster1", "cluster2"},
},
{
desc: "Should return 3 clusters",
clusters: Clusters{"cluster1", "cluster2", "cluster3"},
expected: Clusters{"cluster1", "cluster2", "cluster3"},
},
}
check := []Clusters{
{"cluster"},
{"cluster1", "cluster2"},
{"cluster1", "cluster2", "cluster3"},
}
for i, slice := range slices {
if !reflect.DeepEqual(slice.Get(), check[i]) {
t.Fatalf("Expected:%s\ngot:%s", check[i], slice)
}
for _, test := range tests {
test := test
t.Run(test.desc, func(t *testing.T) {
t.Parallel()
actual := test.clusters.Get()
assert.Equal(t, test.expected, actual)
})
}
}
func TestClustersString(t *testing.T) {
slices := []Clusters{
{"cluster"},
{"cluster1", "cluster2"},
{"cluster1", "cluster2", "cluster3"},
tests := []struct {
desc string
clusters Clusters
expected string
}{
{
desc: "Should return 1 cluster",
clusters: Clusters{"cluster"},
expected: "[cluster]",
},
{
desc: "Should return 2 clusters",
clusters: Clusters{"cluster1", "cluster2"},
expected: "[cluster1 cluster2]",
},
{
desc: "Should return 3 clusters",
clusters: Clusters{"cluster1", "cluster2", "cluster3"},
expected: "[cluster1 cluster2 cluster3]",
},
}
check := []string{
"[cluster]",
"[cluster1 cluster2]",
"[cluster1 cluster2 cluster3]",
}
for i, slice := range slices {
if !reflect.DeepEqual(slice.String(), check[i]) {
t.Fatalf("Expected:%s\ngot:%s", check[i], slice)
}
for _, test := range tests {
test := test
t.Run(test.desc, func(t *testing.T) {
t.Parallel()
actual := test.clusters.String()
assert.Equal(t, test.expected, actual)
})
}
}
func TestClustersSetValue(t *testing.T) {
check := []Clusters{
{"cluster"},
{"cluster1", "cluster2"},
{"cluster1", "cluster2", "cluster3"},
tests := []struct {
desc string
clusters Clusters
expected Clusters
}{
{
desc: "Should return Clusters of size 1",
clusters: Clusters{"cluster"},
expected: Clusters{"cluster"},
},
{
desc: "Should return Clusters of size 2",
clusters: Clusters{"cluster1", "cluster2"},
expected: Clusters{"cluster1", "cluster2"},
},
{
desc: "Should return Clusters of size 3",
clusters: Clusters{"cluster1", "cluster2", "cluster3"},
expected: Clusters{"cluster1", "cluster2", "cluster3"},
},
}
slices := []Clusters{
{"cluster"},
{"cluster1", "cluster2"},
{"cluster1", "cluster2", "cluster3"},
}
for i, s := range slices {
var slice Clusters
slice.SetValue(s)
if !reflect.DeepEqual(slice, check[i]) {
t.Fatalf("Expected:%s\ngot:%s", check[i], slice)
}
for _, test := range tests {
test := test
t.Run(test.desc, func(t *testing.T) {
t.Parallel()
var slice Clusters
slice.SetValue(test.clusters)
assert.Equal(t, test.expected, slice)
})
}
}