github.com/tilt-dev/tilt@v0.33.15-0.20240515162809-0a22ed45d8a0/internal/engine/analytics/analytics_updater_test.go (about)

     1  package analytics
     2  
     3  import (
     4  	"context"
     5  	"testing"
     6  
     7  	"github.com/stretchr/testify/assert"
     8  	"github.com/stretchr/testify/require"
     9  
    10  	tiltanalytics "github.com/tilt-dev/tilt/internal/analytics"
    11  	"github.com/tilt-dev/tilt/internal/store"
    12  	"github.com/tilt-dev/wmclient/pkg/analytics"
    13  )
    14  
    15  func TestOnChange(t *testing.T) {
    16  	to := tiltanalytics.NewFakeOpter(analytics.OptIn)
    17  	_, a := tiltanalytics.NewMemoryTiltAnalyticsForTest(to)
    18  	cmdUpTags := CmdTags(map[string]string{"watch": "true"})
    19  	au := NewAnalyticsUpdater(a, cmdUpTags, store.EngineModeUp)
    20  	st := store.NewTestingStore()
    21  	setUserOpt(st, analytics.OptOut)
    22  	_ = au.OnChange(context.Background(), st, store.LegacyChangeSummary())
    23  
    24  	assert.Equal(t, []analytics.Opt{analytics.OptOut}, to.Calls())
    25  }
    26  
    27  func TestReportOnOptIn(t *testing.T) {
    28  	to := tiltanalytics.NewFakeOpter(analytics.OptIn)
    29  	mem, a := tiltanalytics.NewMemoryTiltAnalyticsForTest(to)
    30  	err := a.SetUserOpt(analytics.OptOut)
    31  	require.NoError(t, err)
    32  
    33  	cmdUpTags := CmdTags(map[string]string{"watch": "true"})
    34  	au := NewAnalyticsUpdater(a, cmdUpTags, store.EngineModeUp)
    35  	st := store.NewTestingStore()
    36  	setUserOpt(st, analytics.OptIn)
    37  	_ = au.OnChange(context.Background(), st, store.LegacyChangeSummary())
    38  
    39  	assert.Equal(t, []analytics.Opt{analytics.OptOut, analytics.OptIn}, to.Calls())
    40  	if assert.Equal(t, 1, len(mem.Counts)) {
    41  		assert.Equal(t, "cmd.up", mem.Counts[0].Name)
    42  		assert.Equal(t, "true", mem.Counts[0].Tags["watch"])
    43  	}
    44  
    45  	// opt-out then back in again, and make sure it doesn't get re-reported.
    46  	setUserOpt(st, analytics.OptOut)
    47  	_ = au.OnChange(context.Background(), st, store.LegacyChangeSummary())
    48  
    49  	setUserOpt(st, analytics.OptIn)
    50  	_ = au.OnChange(context.Background(), st, store.LegacyChangeSummary())
    51  	assert.Equal(t, 1, len(mem.Counts))
    52  }
    53  
    54  func setUserOpt(st *store.TestingStore, opt analytics.Opt) {
    55  	state := st.LockMutableStateForTesting()
    56  	defer st.UnlockMutableState()
    57  	state.AnalyticsUserOpt = opt
    58  }