oh-my-posh/src/segments/upgrade_test.go
Jan De Dobbeleer 63d79fe294
Some checks failed
Code QL / code-ql (push) Waiting to run
Release / changelog (push) Waiting to run
Release / artifacts (push) Blocked by required conditions
Azure Static Web Apps CI/CD / Build and Deploy (push) Has been cancelled
fix(upgrade): restore caching mechanism
2024-11-06 19:37:13 +01:00

93 lines
2.2 KiB
Go

package segments
import (
"errors"
"fmt"
"testing"
"github.com/jandedobbeleer/oh-my-posh/src/build"
cache_ "github.com/jandedobbeleer/oh-my-posh/src/cache/mock"
"github.com/jandedobbeleer/oh-my-posh/src/properties"
"github.com/jandedobbeleer/oh-my-posh/src/runtime/mock"
"github.com/jandedobbeleer/oh-my-posh/src/upgrade"
"github.com/alecthomas/assert"
testify_ "github.com/stretchr/testify/mock"
)
func TestUpgrade(t *testing.T) {
cases := []struct {
Error error
Case string
CurrentVersion string
LatestVersion string
CachedVersion string
ExpectedEnabled bool
HasCache bool
}{
{
Case: "Should upgrade",
CurrentVersion: "1.0.0",
LatestVersion: "1.0.1",
ExpectedEnabled: true,
},
{
Case: "On latest",
CurrentVersion: "1.0.1",
LatestVersion: "1.0.1",
},
{
Case: "Error on update check",
Error: errors.New("error"),
},
{
Case: "On previous, from cache",
HasCache: true,
CurrentVersion: "1.0.2",
LatestVersion: "1.0.3",
CachedVersion: "1.0.2",
ExpectedEnabled: true,
},
{
Case: "On latest, version changed",
HasCache: true,
CurrentVersion: "1.0.2",
LatestVersion: "1.0.2",
CachedVersion: "1.0.1",
},
{
Case: "On previous, version changed",
HasCache: true,
CurrentVersion: "1.0.2",
LatestVersion: "1.0.3",
CachedVersion: "1.0.1",
ExpectedEnabled: true,
},
}
for _, tc := range cases {
env := new(mock.Environment)
cache := &cache_.Cache{}
env.On("Cache").Return(cache)
if len(tc.CachedVersion) == 0 {
tc.CachedVersion = tc.CurrentVersion
}
cacheData := fmt.Sprintf(`{"latest":"%s", "current": "%s"}`, tc.LatestVersion, tc.CachedVersion)
cache.On("Get", UPGRADECACHEKEY).Return(cacheData, tc.HasCache)
cache.On("Set", testify_.Anything, testify_.Anything, testify_.Anything)
build.Version = tc.CurrentVersion
json := fmt.Sprintf(`{"tag_name":"v%s"}`, tc.LatestVersion)
env.On("HTTPRequest", upgrade.RELEASEURL).Return([]byte(json), tc.Error)
ug := &Upgrade{}
ug.Init(properties.Map{}, env)
enabled := ug.Enabled()
assert.Equal(t, tc.ExpectedEnabled, enabled, tc.Case)
}
}