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)
 | |
| }
 |