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 }