github.com/tilt-dev/tilt@v0.33.15-0.20240515162809-0a22ed45d8a0/internal/hud/webview/analytics_nudge_test.go (about)

     1  package webview
     2  
     3  import (
     4  	"testing"
     5  	"time"
     6  
     7  	"github.com/stretchr/testify/assert"
     8  
     9  	"github.com/tilt-dev/tilt/internal/store"
    10  	"github.com/tilt-dev/tilt/pkg/model"
    11  	"github.com/tilt-dev/wmclient/pkg/analytics"
    12  )
    13  
    14  func TestNeedsNudgeRedManifest(t *testing.T) {
    15  	state := newState(nil)
    16  
    17  	m := model.Manifest{Name: "server"}
    18  	targ := store.NewManifestTarget(m)
    19  	state.UpsertManifestTarget(targ)
    20  
    21  	nudge := NeedsNudge(*state)
    22  	assert.False(t, nudge,
    23  		"manifest has never had successful build, expected needsNudge = false")
    24  }
    25  
    26  func TestNeedsNudgeGreenManifest(t *testing.T) {
    27  	state := newState(nil)
    28  
    29  	m := model.Manifest{Name: "server"}
    30  	targ := store.NewManifestTarget(m)
    31  	targ.State = &store.ManifestState{LastSuccessfulDeployTime: time.Now()}
    32  	state.UpsertManifestTarget(targ)
    33  
    34  	nudge := NeedsNudge(*state)
    35  	assert.True(t, nudge,
    36  		"manifest HAS had had successful build, expected needsNudge = true")
    37  }
    38  
    39  func TestNeedsNudgeAlreadyOpted(t *testing.T) {
    40  	state := newState(nil)
    41  
    42  	state.AnalyticsUserOpt = analytics.OptIn
    43  	m := model.Manifest{Name: "server"}
    44  	targ := store.NewManifestTarget(m)
    45  	targ.State = &store.ManifestState{LastSuccessfulDeployTime: time.Now()}
    46  	state.UpsertManifestTarget(targ)
    47  
    48  	nudge := NeedsNudge(*state)
    49  	assert.False(t, nudge,
    50  		"user already opted in, expected needsNudge = false")
    51  }