1package update
2
3import (
4 "context"
5 "testing"
6 "time"
7
8 "github.com/stretchr/testify/require"
9)
10
11func TestCheckForUpdate_Old(t *testing.T) {
12 info, err := Check(t.Context(), "v0.10.0", testClient{"v0.11.0"})
13 require.NoError(t, err)
14 require.NotNil(t, info)
15 require.True(t, info.Available())
16}
17
18func TestCheckForUpdate_Beta(t *testing.T) {
19 t.Run("current is stable", func(t *testing.T) {
20 info, err := Check(t.Context(), "v0.10.0", testClient{"v0.11.0-beta.1"})
21 require.NoError(t, err)
22 require.NotNil(t, info)
23 require.True(t, info.Available())
24 })
25
26 t.Run("current is also beta", func(t *testing.T) {
27 info, err := Check(t.Context(), "v0.11.0-beta.1", testClient{"v0.11.0-beta.2"})
28 require.NoError(t, err)
29 require.NotNil(t, info)
30 require.True(t, info.Available())
31 })
32
33 t.Run("current is beta, latest isn't", func(t *testing.T) {
34 info, err := Check(t.Context(), "v0.11.0-beta.1", testClient{"v0.11.0"})
35 require.NoError(t, err)
36 require.NotNil(t, info)
37 require.True(t, info.Available())
38 })
39}
40
41func TestCheckForUpdate_Fork(t *testing.T) {
42 t.Run("fork version vs stable", func(t *testing.T) {
43 info, err := Check(t.Context(), "v0.18.5-fork.1", testClient{"v0.18.5"})
44 require.NoError(t, err)
45 require.NotNil(t, info)
46 require.False(t, info.Available())
47 })
48
49 t.Run("fork version vs newer stable", func(t *testing.T) {
50 info, err := Check(t.Context(), "v0.18.5-fork.1", testClient{"v0.18.6"})
51 require.NoError(t, err)
52 require.NotNil(t, info)
53 require.True(t, info.Available())
54 })
55
56 t.Run("fork version vs newer fork version", func(t *testing.T) {
57 info, err := Check(t.Context(), "v0.18.5-fork.1", testClient{"v0.18.5-fork.2"})
58 require.NoError(t, err)
59 require.NotNil(t, info)
60 require.True(t, info.Available())
61 })
62}
63
64type testClient struct{ version string }
65
66// Latest implements Client.
67func (t testClient) Latest(ctx context.Context) (*ModuleVersion, error) {
68 return &ModuleVersion{
69 Version: t.version,
70 Time: time.Now(),
71 }, nil
72}