update_test.go

 1package update
 2
 3import (
 4	"context"
 5	"testing"
 6
 7	"github.com/charmbracelet/crush/internal/version"
 8	"github.com/stretchr/testify/require"
 9)
10
11func TestCheckForUpdate_DevelopmentVersion(t *testing.T) {
12	originalVersion := version.Version
13	version.Version = "unknown"
14	t.Cleanup(func() {
15		version.Version = originalVersion
16	})
17
18	info, err := Check(t.Context(), testClient{})
19	require.NoError(t, err)
20	require.NotNil(t, info)
21	require.False(t, info.Available())
22}
23
24func TestCheckForUpdate_Old(t *testing.T) {
25	originalVersion := version.Version
26	version.Version = "0.10.0"
27	t.Cleanup(func() {
28		version.Version = originalVersion
29	})
30	info, err := Check(t.Context(), testClient{})
31	require.NoError(t, err)
32	require.NotNil(t, info)
33	require.True(t, info.Available())
34}
35
36type testClient struct{}
37
38// Latest implements Client.
39func (t testClient) Latest(ctx context.Context) (*Release, error) {
40	return &Release{
41		TagName: "v0.11.0",
42		HTMLURL: "https://example.org",
43	}, nil
44}