[quality] unit tests for pkg/api projects and server_runtime helpers#19948
Conversation
Add 14 test cases for previously-untested pure functions in pkg/api: - projects_test.go (10 tests): getProjectDashboards known/unknown/empty, isProjectEnabled wildcard/exact/mismatch/case-sensitive - server_runtime_test.go (7 tests): factory functions, quantumWorkloadCache env var control (disabled, forced-running, nil-client), cache TTL behavior These target 2 of the 15 untested source files in pkg/api (60.5% coverage). Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Signed-off-by: sec-check <sec-check@hive.kubestellar.io>
|
[APPROVALNOTIFIER] This PR is NOT APPROVED This pull-request has been approved by: The full list of commands accepted by this bot can be found here. DetailsNeeds approval from an approver in each of these files:Approvers can indicate their approval by writing |
✅ Deploy Preview for kubestellarconsole canceled.
|
|
🐝 Hi @clubanderson! I'm Trusted users — org members and contributors with write access — can mention Automation may take a moment to start, and follow-up happens through workflow activity rather than chat replies. |
|
👋 Hey @clubanderson — thanks for opening this PR!
This is an automated message. |
There was a problem hiding this comment.
Pull request overview
Adds new Go unit tests in pkg/api to improve coverage for project dashboard presets/helpers and server runtime/quantum workload cache helpers, supporting the repo’s coverage-ratchet goals (Fixes #19947). CI will validate test/build status on the PR.
Changes:
- Add tests for
getProjectDashboardsandisProjectEnabledhelper behavior (including wildcard and empty-string cases). - Add tests covering server runtime factory constructors and
quantumWorkloadCache.isRunningenv-var overrides and cache behavior.
Reviewed changes
Copilot reviewed 2 out of 2 changed files in this pull request and generated 3 comments.
| File | Description |
|---|---|
| pkg/api/projects_test.go | New tests for project dashboard preset lookup and project matching logic. |
| pkg/api/server_runtime_test.go | New tests for server runtime factory helpers and quantum workload cache behavior. |
| package api | ||
|
|
||
| import ( | ||
| "testing" | ||
| ) | ||
|
|
| package api | ||
|
|
||
| import "testing" | ||
|
|
||
| func TestGetProjectDashboards_KnownProject(t *testing.T) { | ||
| dashboards := getProjectDashboards("kubestellar") | ||
| if dashboards == nil { | ||
| t.Fatal("expected non-nil dashboard list for 'kubestellar' project") | ||
| } | ||
| if len(dashboards) == 0 { | ||
| t.Fatal("expected non-empty dashboard list for 'kubestellar' project") | ||
| } | ||
| // Verify key dashboards are present | ||
| required := []string{"dashboard", "clusters", "compliance", "security", "workloads"} | ||
| for _, r := range required { | ||
| found := false | ||
| for _, d := range dashboards { | ||
| if d == r { | ||
| found = true | ||
| break | ||
| } | ||
| } | ||
| if !found { | ||
| t.Errorf("expected dashboard %q in kubestellar presets, not found", r) | ||
| } | ||
| } | ||
| } |
| func TestQuantumWorkloadCache_CacheTTL(t *testing.T) { | ||
| t.Setenv("QUANTUM_WORKLOAD_DISABLED", "") | ||
| t.Setenv("QUANTUM_WORKLOAD_RUNNING", "") | ||
| qc := newQuantumWorkloadCache() | ||
|
|
||
| // First call populates cache | ||
| result1 := qc.isRunning(nil) | ||
| if result1 { | ||
| t.Error("expected false with nil client") | ||
| } | ||
|
|
||
| // Second call should use cache (refreshedAt is recent) | ||
| result2 := qc.isRunning(nil) | ||
| if result2 != result1 { | ||
| t.Error("expected cached result to match first result") | ||
| } | ||
| } |
|
Thank you for your contribution! Your PR has been merged. Check out what's new:
Stay connected: Slack #kubestellar-dev | Multi-Cluster Survey |
|
Post-merge build verification passed ✅ Both Go and frontend builds compiled successfully against merge commit |
Test Improvement
Adds 14 test cases for two previously-untested source files in
pkg/api:projects_test.go(10 tests)getProjectDashboards: known project returns expected dashboards, unknown project returns nil, empty string returns nilisProjectEnabled: wildcard always matches, wildcard with empty active project, exact match, mismatch, empty active with non-wildcard, both empty, case-sensitive mismatchserver_runtime_test.go(7 tests)newServerLifecycle,newAuthRuntime,newBackgroundServices,newQuantumWorkloadCachequantumWorkloadCache.isRunning: env var disabled, env var forced-running, nil k8s client, cache TTL behaviorThese target the first 2 of 15 untested files in
pkg/api(currently at 60.5% coverage).Fixes #19947
Filed by quality agent (ACMM L4/L6 — full mode)