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

     1  package uiresources
     2  
     3  import (
     4  	"strings"
     5  	"testing"
     6  
     7  	"github.com/stretchr/testify/require"
     8  	metav1 "k8s.io/apimachinery/pkg/apis/meta/v1"
     9  
    10  	"github.com/tilt-dev/tilt/internal/store"
    11  	"github.com/tilt-dev/tilt/pkg/apis/core/v1alpha1"
    12  )
    13  
    14  func resourceWithDisableState(state v1alpha1.DisableState) *v1alpha1.UIResource {
    15  	return &v1alpha1.UIResource{
    16  		ObjectMeta: metav1.ObjectMeta{Name: "foo"},
    17  		Status: v1alpha1.UIResourceStatus{
    18  			DisableStatus: v1alpha1.DisableResourceStatus{
    19  				State: state,
    20  			},
    21  		},
    22  	}
    23  }
    24  
    25  func disabledResource() *v1alpha1.UIResource {
    26  	return resourceWithDisableState(v1alpha1.DisableStateDisabled)
    27  }
    28  
    29  func enabledResource() *v1alpha1.UIResource {
    30  	return resourceWithDisableState(v1alpha1.DisableStateEnabled)
    31  }
    32  
    33  func TestLogging(t *testing.T) {
    34  	for _, tc := range []struct {
    35  		name        string
    36  		old, new    *v1alpha1.UIResource
    37  		expectedLog string
    38  	}{
    39  		{"enable", disabledResource(), enabledResource(), "Resource \"foo\" enabled."},
    40  		{"disable", enabledResource(), disabledResource(), "Resource \"foo\" disabled."},
    41  		{"old nil", nil, enabledResource(), ""},
    42  		{"old pending", resourceWithDisableState(v1alpha1.DisableStatePending), enabledResource(), ""},
    43  		{"enabled, no change", enabledResource(), enabledResource(), ""},
    44  		{"disabled, no change", disabledResource(), disabledResource(), ""},
    45  	} {
    46  		t.Run(tc.name, func(t *testing.T) {
    47  			state := store.NewState()
    48  			state.UIResources["foo"] = tc.old
    49  
    50  			action := UIResourceUpsertAction{UIResource: tc.new}
    51  
    52  			HandleUIResourceUpsertAction(state, action)
    53  
    54  			log := state.LogStore.ManifestLog("foo")
    55  			if tc.expectedLog == "" {
    56  				require.Equal(t, "", log)
    57  			} else {
    58  				lines := strings.Split(log, "\n")
    59  				require.Equal(t, 2, len(lines))
    60  				require.Contains(t, lines[0], tc.expectedLog)
    61  				require.Equal(t, "", lines[1])
    62  			}
    63  		})
    64  	}
    65  }