Files
seanime-docker/seanime-2.9.10/internal/updater/check_test.go
2025-09-20 14:08:38 +01:00

139 lines
3.0 KiB
Go

package updater
import (
"seanime/internal/constants"
"seanime/internal/events"
"seanime/internal/util"
"strings"
"testing"
"github.com/davecgh/go-spew/spew"
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require"
)
func TestUpdater_getReleaseName(t *testing.T) {
updater := Updater{}
t.Log(updater.GetReleaseName(constants.Version))
}
func TestUpdater_FetchLatestRelease(t *testing.T) {
fallbackGithubUrl = "https://seanimedud.app/api/releases" // simulate dead endpoint
//githubUrl = "https://api.github.com/repos/zbonfo/seanime-desktop/releases/latest"
updater := New(constants.Version, util.NewLogger(), events.NewMockWSEventManager(util.NewLogger()))
release, err := updater.fetchLatestRelease()
if err != nil {
t.Fatal(err)
}
if assert.NotNil(t, release) {
spew.Dump(release)
}
}
func TestUpdater_FetchLatestReleaseFromDocs(t *testing.T) {
updater := New(constants.Version, util.NewLogger(), events.NewMockWSEventManager(util.NewLogger()))
release, err := updater.fetchLatestReleaseFromDocs()
if err != nil {
t.Fatal(err)
}
if assert.NotNil(t, release) {
spew.Dump(release)
}
}
func TestUpdater_FetchLatestReleaseFromGitHub(t *testing.T) {
updater := New(constants.Version, util.NewLogger(), events.NewMockWSEventManager(util.NewLogger()))
release, err := updater.fetchLatestReleaseFromGitHub()
if err != nil {
t.Fatal(err)
}
if assert.NotNil(t, release) {
spew.Dump(release)
}
}
func TestUpdater_CompareVersion(t *testing.T) {
tests := []struct {
currVersion string
latestVersion string
shouldUpdate bool
}{
{
currVersion: "0.2.2",
latestVersion: "0.2.2",
shouldUpdate: false,
},
{
currVersion: "2.2.0-prerelease",
latestVersion: "2.2.0",
shouldUpdate: true,
},
{
currVersion: "2.2.0",
latestVersion: "2.2.0-prerelease",
shouldUpdate: false,
},
{
currVersion: "0.2.2",
latestVersion: "0.2.3",
shouldUpdate: true,
},
{
currVersion: "0.2.2",
latestVersion: "0.3.0",
shouldUpdate: true,
},
{
currVersion: "0.2.2",
latestVersion: "1.0.0",
shouldUpdate: true,
},
{
currVersion: "0.2.2",
latestVersion: "0.2.1",
shouldUpdate: false,
},
{
currVersion: "1.0.0",
latestVersion: "0.2.1",
shouldUpdate: false,
},
}
for _, tt := range tests {
t.Run(tt.latestVersion, func(t *testing.T) {
updateType, shouldUpdate := util.CompareVersion(tt.currVersion, tt.latestVersion)
assert.Equal(t, tt.shouldUpdate, shouldUpdate)
t.Log(tt.latestVersion, updateType)
})
}
}
func TestUpdater(t *testing.T) {
u := New(constants.Version, util.NewLogger(), events.NewMockWSEventManager(util.NewLogger()))
rl, err := u.GetLatestRelease()
require.NoError(t, err)
rl.TagName = "v2.2.1"
newV := strings.TrimPrefix(rl.TagName, "v")
updateTypeI, shouldUpdate := util.CompareVersion(u.CurrentVersion, newV)
isOlder := util.VersionIsOlderThan(u.CurrentVersion, newV)
util.Spew(isOlder)
util.Spew(shouldUpdate)
util.Spew(updateTypeI)
}