diff --git a/tests/root/update_test.go b/tests/root/update_test.go new file mode 100644 index 0000000..898f7e1 --- /dev/null +++ b/tests/root/update_test.go @@ -0,0 +1,63 @@ +package tests + +import ( + "os" + "path/filepath" + "testing" + + "github.com/versenilvis/iris/root" +) + +func TestIsNewer(t *testing.T) { + tests := []struct { + current string + latest string + want bool + }{ + {"v1.0.0", "v1.0.1", true}, + {"v1.0.1", "v1.0.0", false}, + {"v1.0.0", "v1.0.0", false}, + {"v1.2.3", "v1.2.4", true}, + {"v1.2.0", "v1.1.9", false}, + {"dev", "v1.0.0", false}, // dev never updates + {"v1.0.0", "dev", false}, + {"", "v1.0.0", false}, + } + + for _, tt := range tests { + if got := root.IsNewer(tt.current, tt.latest); got != tt.want { + t.Errorf("IsNewer(%q, %q) = %v; want %v", tt.current, tt.latest, got, tt.want) + } + } +} + +func TestUpdateState(t *testing.T) { + // Use a temporary directory for the state file + tmpDir, err := os.MkdirTemp("", "iris-test-*") + if err != nil { + t.Fatal(err) + } + defer os.RemoveAll(tmpDir) + + // Override home dir for testing + homeBackup := os.Getenv("HOME") + os.Setenv("HOME", tmpDir) + defer os.Setenv("HOME", homeBackup) + + // Ensure .iris directory exists + _ = os.MkdirAll(filepath.Join(tmpDir, ".iris"), 0755) + + state := root.LoadUpdateState() + state.SeenVersion = "v1.0.0" + state.LastCheck = 123456789 + + root.SaveUpdateState(state) + + loaded := root.LoadUpdateState() + if loaded.SeenVersion != state.SeenVersion { + t.Errorf("Expected SeenVersion %q, got %q", state.SeenVersion, loaded.SeenVersion) + } + if loaded.LastCheck != state.LastCheck { + t.Errorf("Expected LastCheck %d, got %d", state.LastCheck, loaded.LastCheck) + } +}