package version import ( "testing" "time" "uuid" "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" ) func TestSelfUpdateOutcomePersistsReadsAndClears(t *testing.T) { home := t.TempDir() t.Setenv("HOME", home) t.Setenv("XDG_CONFIG_HOME", home) journal := &UpdateJournal{ ID: uuid.NewV7().String(), OriginJobID: uuid.New().String(), State: UpdateTransactionCommitted, Expected: BinaryIdentity{Version: "9.9.9"}, Targets: []UpdateTarget{{Role: "primary", Path: "/test/manager", Outcome: "committed"}}, } require.NoError(t, persistSelfUpdateOutcome(journal)) outcome, err := ReadSelfUpdateOutcome() require.NoError(t, err) require.NotNil(t, outcome) assert.Equal(t, journal.ID, outcome.TransactionID) assert.Equal(t, journal.OriginJobID, outcome.OriginJobID) assert.Equal(t, UpdateTransactionCommitted, outcome.State) assert.WithinDuration(t, time.Now(), outcome.CompletedAt, time.Second) require.Error(t, ClearSelfUpdateOutcome(uuid.NewV7().String())) require.NoError(t, ClearSelfUpdateOutcome(journal.ID)) outcome, err = ReadSelfUpdateOutcome() require.NoError(t, err) assert.Nil(t, outcome) }