1package update
2
3import (
4 "context"
5 "testing"
6
7 "github.com/stretchr/testify/require"
8)
9
10func TestCheckForUpdate_DevelopmentVersion(t *testing.T) {
11 info, err := Check(t.Context(), "unknown", testClient{"v0.11.0"})
12 require.NoError(t, err)
13 require.NotNil(t, info)
14 require.False(t, info.Available())
15}
16
17func TestCheckForUpdate_Old(t *testing.T) {
18 info, err := Check(t.Context(), "v0.10.0", testClient{"v0.11.0"})
19 require.NoError(t, err)
20 require.NotNil(t, info)
21 require.True(t, info.Available())
22}
23
24func TestCheckForUpdate_Beta(t *testing.T) {
25 t.Run("current is stable", func(t *testing.T) {
26 info, err := Check(t.Context(), "v0.10.0", testClient{"v0.11.0-beta.1"})
27 require.NoError(t, err)
28 require.NotNil(t, info)
29 require.False(t, info.Available())
30 })
31
32 t.Run("current is also beta", func(t *testing.T) {
33 info, err := Check(t.Context(), "v0.11.0-beta.1", testClient{"v0.11.0-beta.2"})
34 require.NoError(t, err)
35 require.NotNil(t, info)
36 require.True(t, info.Available())
37 })
38
39 t.Run("current is beta, latest isn't", func(t *testing.T) {
40 info, err := Check(t.Context(), "v0.11.0-beta.1", testClient{"v0.11.0"})
41 require.NoError(t, err)
42 require.NotNil(t, info)
43 require.True(t, info.Available())
44 })
45}
46
47type testClient struct{ tag string }
48
49// Latest implements Client.
50func (t testClient) Latest(ctx context.Context) (*Release, error) {
51 return &Release{
52 TagName: t.tag,
53 HTMLURL: "https://example.org",
54 }, nil
55}