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  }