mirror of
https://github.com/Rain-kl/OpenFlare.git
synced 2026-09-30 06:16:37 +08:00
88 lines
2.4 KiB
Go
88 lines
2.4 KiB
Go
package service
|
|
|
|
import (
|
|
"atsflare/common"
|
|
"testing"
|
|
)
|
|
|
|
func TestIsVersionNewer(t *testing.T) {
|
|
testCases := []struct {
|
|
name string
|
|
current string
|
|
latest string
|
|
expected bool
|
|
}{
|
|
{name: "newer patch", current: "v1.2.3", latest: "v1.2.4", expected: true},
|
|
{name: "same version", current: "v1.2.3", latest: "v1.2.3", expected: false},
|
|
{name: "older remote", current: "v1.3.0", latest: "v1.2.9", expected: false},
|
|
{name: "double digit segment", current: "v1.9.9", latest: "v1.10.0", expected: true},
|
|
{name: "dev build", current: "dev", latest: "v0.4.0", expected: true},
|
|
}
|
|
|
|
for _, testCase := range testCases {
|
|
t.Run(testCase.name, func(t *testing.T) {
|
|
actual := isVersionNewer(testCase.current, testCase.latest)
|
|
if actual != testCase.expected {
|
|
t.Fatalf("unexpected compare result: current=%s latest=%s actual=%v expected=%v", testCase.current, testCase.latest, actual, testCase.expected)
|
|
}
|
|
})
|
|
}
|
|
}
|
|
|
|
func TestBuildLatestServerReleaseView(t *testing.T) {
|
|
originalVersion := common.Version
|
|
common.Version = "v0.4.0"
|
|
t.Cleanup(func() {
|
|
common.Version = originalVersion
|
|
serverUpgradeState.Lock()
|
|
serverUpgradeState.inProgress = false
|
|
serverUpgradeState.Unlock()
|
|
})
|
|
|
|
serverUpgradeState.Lock()
|
|
serverUpgradeState.inProgress = true
|
|
serverUpgradeState.Unlock()
|
|
|
|
view := buildLatestServerReleaseView(&githubReleaseResponse{
|
|
TagName: "v0.5.0",
|
|
Body: "release notes",
|
|
HTMLURL: "https://github.com/Rain-kl/ATSFlare/releases/tag/v0.5.0",
|
|
PublishedAt: "2026-03-11T00:00:00Z",
|
|
})
|
|
|
|
if view.CurrentVersion != "v0.4.0" {
|
|
t.Fatalf("unexpected current version: %s", view.CurrentVersion)
|
|
}
|
|
if !view.HasUpdate {
|
|
t.Fatal("expected has_update to be true")
|
|
}
|
|
if !view.InProgress {
|
|
t.Fatal("expected in_progress to reflect upgrade state")
|
|
}
|
|
if view.TagName != "v0.5.0" {
|
|
t.Fatalf("unexpected tag name: %s", view.TagName)
|
|
}
|
|
}
|
|
|
|
func TestBuildLatestServerReleaseViewDevBuild(t *testing.T) {
|
|
originalVersion := common.Version
|
|
common.Version = "dev"
|
|
t.Cleanup(func() {
|
|
common.Version = originalVersion
|
|
serverUpgradeState.Lock()
|
|
serverUpgradeState.inProgress = false
|
|
serverUpgradeState.Unlock()
|
|
})
|
|
|
|
view := buildLatestServerReleaseView(&githubReleaseResponse{
|
|
TagName: "v0.5.0",
|
|
})
|
|
|
|
if view.HasUpdate {
|
|
t.Fatal("expected dev build not to report update availability")
|
|
}
|
|
if view.UpgradeSupported {
|
|
t.Fatal("expected dev build not to support self-upgrade")
|
|
}
|
|
}
|