github.com/tilt-dev/tilt@v0.33.15-0.20240515162809-0a22ed45d8a0/internal/store/kubernetesapplys/reducers_test.go (about)

     1  package kubernetesapplys
     2  
     3  import (
     4  	"testing"
     5  	"time"
     6  
     7  	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
     8  
     9  	"github.com/stretchr/testify/assert"
    10  
    11  	"github.com/tilt-dev/tilt/internal/store"
    12  	"github.com/tilt-dev/tilt/internal/store/kubernetesdiscoverys"
    13  	"github.com/tilt-dev/tilt/pkg/apis"
    14  	"github.com/tilt-dev/tilt/pkg/apis/core/v1alpha1"
    15  )
    16  
    17  const resultYAML = `
    18  apiVersion: v1
    19  kind: ConfigMap
    20  metadata:
    21    name: postgres-config
    22    uid: abc-123
    23    labels:
    24      app: postgres
    25  data:
    26    POSTGRES_DB: postgresdb
    27    POSTGRES_USER: postgresadmin
    28    POSTGRES_PASSWORD: admin123
    29  `
    30  
    31  func TestCacheFilter(t *testing.T) {
    32  	ka := &v1alpha1.KubernetesApply{
    33  		ObjectMeta: metav1.ObjectMeta{Name: "a"},
    34  		Status: v1alpha1.KubernetesApplyStatus{
    35  			ResultYAML:    resultYAML,
    36  			LastApplyTime: apis.NowMicro(),
    37  		},
    38  	}
    39  	kd := &v1alpha1.KubernetesDiscovery{ObjectMeta: metav1.ObjectMeta{Name: "a"}}
    40  
    41  	state := store.NewState()
    42  	HandleKubernetesApplyUpsertAction(state, KubernetesApplyUpsertAction{
    43  		KubernetesApply: ka,
    44  	})
    45  	kubernetesdiscoverys.HandleKubernetesDiscoveryUpsertAction(state, kubernetesdiscoverys.KubernetesDiscoveryUpsertAction{
    46  		KubernetesDiscovery: kd,
    47  	})
    48  
    49  	res := state.KubernetesResources[kd.Name]
    50  	assert.Equal(t, kd, res.Discovery)
    51  
    52  	ka2 := ka.DeepCopy()
    53  	ka2.Status.LastApplyTime = apis.NewMicroTime(time.Now().Add(time.Second))
    54  	HandleKubernetesApplyUpsertAction(state, KubernetesApplyUpsertAction{
    55  		KubernetesApply: ka2,
    56  	})
    57  	assert.Same(t, state.KubernetesResources[kd.Name].ApplyFilter, res.ApplyFilter)
    58  }
    59  
    60  func TestOutOfOrderSegfault(t *testing.T) {
    61  	ka := &v1alpha1.KubernetesApply{
    62  		ObjectMeta: metav1.ObjectMeta{Name: "a"},
    63  		Status: v1alpha1.KubernetesApplyStatus{
    64  			ResultYAML:    resultYAML,
    65  			LastApplyTime: apis.NowMicro(),
    66  		},
    67  	}
    68  	kd := &v1alpha1.KubernetesDiscovery{ObjectMeta: metav1.ObjectMeta{Name: "a"}}
    69  
    70  	state := store.NewState()
    71  	kubernetesdiscoverys.HandleKubernetesDiscoveryUpsertAction(state, kubernetesdiscoverys.KubernetesDiscoveryUpsertAction{
    72  		KubernetesDiscovery: kd,
    73  	})
    74  	res := state.KubernetesResources[kd.Name]
    75  	assert.Equal(t, kd, res.Discovery)
    76  	assert.Nil(t, res.ApplyFilter)
    77  
    78  	HandleKubernetesApplyUpsertAction(state, KubernetesApplyUpsertAction{
    79  		KubernetesApply: ka,
    80  	})
    81  	assert.NotNil(t, state.KubernetesResources[kd.Name].ApplyFilter)
    82  }