github.com/tilt-dev/tilt@v0.33.15-0.20240515162809-0a22ed45d8a0/internal/controllers/indexer/list_test.go (about) 1 package indexer_test 2 3 import ( 4 "context" 5 "os" 6 "testing" 7 8 "github.com/stretchr/testify/assert" 9 metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" 10 "k8s.io/apimachinery/pkg/types" 11 "sigs.k8s.io/controller-runtime/pkg/controller/controllerutil" 12 13 "github.com/tilt-dev/tilt/internal/controllers/fake" 14 "github.com/tilt-dev/tilt/internal/controllers/indexer" 15 "github.com/tilt-dev/tilt/pkg/apis/core/v1alpha1" 16 "github.com/tilt-dev/tilt/pkg/logger" 17 ) 18 19 func TestListOwnedBy(t *testing.T) { 20 c := fake.NewFakeTiltClient() 21 ctx, cancel := context.WithCancel(context.Background()) 22 t.Cleanup(cancel) 23 ctx = logger.WithLogger(ctx, logger.NewTestLogger(os.Stdout)) 24 scheme := v1alpha1.NewScheme() 25 26 // set up the owner objects 27 kd1 := &v1alpha1.KubernetesDiscovery{ 28 TypeMeta: metav1.TypeMeta{APIVersion: "tilt.dev/v1alpha1", Kind: "KubernetesDiscovery"}, 29 ObjectMeta: metav1.ObjectMeta{Name: "fe1"}, 30 } 31 assert.NoError(t, c.Create(ctx, kd1)) 32 33 kd2 := &v1alpha1.KubernetesDiscovery{ 34 TypeMeta: metav1.TypeMeta{APIVersion: "tilt.dev/v1alpha1", Kind: "KubernetesDiscovery"}, 35 ObjectMeta: metav1.ObjectMeta{Name: "fe2"}, 36 } 37 assert.NoError(t, c.Create(ctx, kd2)) 38 39 // set up the child objects. 40 pls1a := &v1alpha1.PodLogStream{ 41 ObjectMeta: metav1.ObjectMeta{Name: "pls1a"}, 42 Spec: v1alpha1.PodLogStreamSpec{Pod: "pls1a"}, 43 } 44 pls1b := &v1alpha1.PodLogStream{ 45 ObjectMeta: metav1.ObjectMeta{Name: "pls1b"}, 46 Spec: v1alpha1.PodLogStreamSpec{Pod: "pls1b"}, 47 } 48 pls2a := &v1alpha1.PodLogStream{ 49 ObjectMeta: metav1.ObjectMeta{Name: "pls2a"}, 50 Spec: v1alpha1.PodLogStreamSpec{Pod: "pls2a"}, 51 } 52 53 assert.NoError(t, controllerutil.SetControllerReference(kd1, pls1a, scheme)) 54 assert.NoError(t, controllerutil.SetControllerReference(kd1, pls1b, scheme)) 55 assert.NoError(t, controllerutil.SetControllerReference(kd2, pls2a, scheme)) 56 assert.NoError(t, c.Create(ctx, pls1a)) 57 assert.NoError(t, c.Create(ctx, pls1b)) 58 assert.NoError(t, c.Create(ctx, pls2a)) 59 60 var plsList1 v1alpha1.PodLogStreamList 61 assert.NoError(t, indexer.ListOwnedBy(ctx, c, &plsList1, types.NamespacedName{Name: kd1.Name}, kd1.TypeMeta)) 62 assert.ElementsMatch(t, []v1alpha1.PodLogStream{*pls1a, *pls1b}, plsList1.Items) 63 64 var plsList2 v1alpha1.PodLogStreamList 65 assert.NoError(t, indexer.ListOwnedBy(ctx, c, &plsList2, types.NamespacedName{Name: kd2.Name}, kd2.TypeMeta)) 66 assert.ElementsMatch(t, []v1alpha1.PodLogStream{*pls2a}, plsList2.Items) 67 }