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 }