package main import ( "os" "path/filepath" "testing" ) func TestReadUpdateStatus(t *testing.T) { path := filepath.Join(t.TempDir(), "status.json") if err := os.WriteFile(path, []byte(`{"currentVersion":"old","availableVersion":"v2.0.0","state":"available","mode":"notify","message":"Доступно обновление"}`), 0o600); err != nil { t.Fatal(err) } t.Setenv("DASHBOARD_UPDATE_STATUS_PATH", path) status := readUpdateStatus() if status.CurrentVersion != version || status.AvailableVersion != "v2.0.0" || status.State != "available" { t.Fatalf("unexpected update status: %+v", status) } } func TestReadUpdateStatusWithoutFile(t *testing.T) { t.Setenv("DASHBOARD_UPDATE_STATUS_PATH", filepath.Join(t.TempDir(), "missing.json")) status := readUpdateStatus() if status.CurrentVersion != version || status.State != "unknown" { t.Fatalf("unexpected default update status: %+v", status) } } func TestRequestUpdate(t *testing.T) { directory := t.TempDir() statusPath := filepath.Join(directory, "status.json") requestPath := filepath.Join(directory, "request") t.Setenv("DASHBOARD_UPDATE_STATUS_PATH", statusPath) t.Setenv("DASHBOARD_UPDATE_REQUEST_PATH", requestPath) status, err := requestUpdate() if err != nil { t.Fatal(err) } if status.State != "queued" { t.Fatalf("unexpected queued status: %+v", status) } if _, err := os.Stat(requestPath); err != nil { t.Fatalf("update request was not created: %v", err) } }