95 lines
2.4 KiB
Go
95 lines
2.4 KiB
Go
package simulator
|
|
|
|
import (
|
|
"testing"
|
|
|
|
"github.com/stretchr/testify/require"
|
|
)
|
|
|
|
func TestVisibleRunnerGroupsInsert(t *testing.T) {
|
|
g := NewVisibleRunnerGroups()
|
|
|
|
orgDefault := NewRunnerGroupFromProperties("", "myorg1", "")
|
|
orgCustom := NewRunnerGroupFromProperties("", "myorg1", "myorg1group1")
|
|
enterpriseDefault := NewRunnerGroupFromProperties("myenterprise1", "", "")
|
|
|
|
g.insert(orgCustom, 0)
|
|
g.insert(orgDefault, 0)
|
|
g.insert(enterpriseDefault, 1)
|
|
|
|
var got []RunnerGroup
|
|
|
|
err := g.Traverse(func(rg RunnerGroup) (bool, error) {
|
|
got = append(got, rg)
|
|
return false, nil
|
|
})
|
|
|
|
require.NoError(t, err)
|
|
require.Equal(t, []RunnerGroup{orgDefault, enterpriseDefault, orgCustom}, got, "Unexpected result")
|
|
}
|
|
|
|
func TestVisibleRunnerGroups(t *testing.T) {
|
|
v := NewVisibleRunnerGroups()
|
|
|
|
requireGroups := func(t *testing.T, included, notIncluded []RunnerGroup) {
|
|
t.Helper()
|
|
|
|
for _, rg := range included {
|
|
if !v.Includes(rg) {
|
|
t.Errorf("%v must be included", rg)
|
|
}
|
|
}
|
|
|
|
for _, rg := range notIncluded {
|
|
if v.Includes(rg) {
|
|
t.Errorf("%v must not be included", rg)
|
|
}
|
|
}
|
|
|
|
var got []RunnerGroup
|
|
|
|
err := v.Traverse(func(rg RunnerGroup) (bool, error) {
|
|
got = append(got, rg)
|
|
|
|
return false, nil
|
|
})
|
|
|
|
require.NoError(t, err)
|
|
require.Equal(t, included, got)
|
|
}
|
|
|
|
orgDefault := NewRunnerGroupFromProperties("", "myorg1", "")
|
|
orgCustom := NewRunnerGroupFromProperties("", "myorg1", "myorg1group1")
|
|
enterpriseDefault := NewRunnerGroupFromProperties("myenterprise1", "", "")
|
|
enterpriseCustom := NewRunnerGroupFromProperties("myenterprise1", "", "myenterprise1group1")
|
|
|
|
requireGroups(t, nil, []RunnerGroup{orgDefault, enterpriseDefault, orgCustom, enterpriseCustom})
|
|
|
|
v.Add(orgCustom)
|
|
|
|
requireGroups(t, []RunnerGroup{orgCustom}, []RunnerGroup{orgDefault, enterpriseDefault, enterpriseCustom})
|
|
|
|
v.Add(orgDefault)
|
|
|
|
requireGroups(t, []RunnerGroup{orgDefault, orgCustom}, []RunnerGroup{enterpriseDefault, enterpriseCustom})
|
|
|
|
v.Add(enterpriseCustom)
|
|
|
|
requireGroups(t, []RunnerGroup{orgDefault, orgCustom, enterpriseCustom}, []RunnerGroup{enterpriseDefault})
|
|
|
|
v.Add(enterpriseDefault)
|
|
|
|
requireGroups(t, []RunnerGroup{orgDefault, enterpriseDefault, orgCustom, enterpriseCustom}, nil)
|
|
|
|
var first []RunnerGroup
|
|
|
|
err := v.Traverse(func(rg RunnerGroup) (bool, error) {
|
|
first = append(first, rg)
|
|
|
|
return true, nil
|
|
})
|
|
|
|
require.NoError(t, err)
|
|
require.Equal(t, []RunnerGroup{orgDefault}, first)
|
|
}
|