update_test.go 1.2 KB

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