mirror of
https://github.com/safedep/pmg.git
synced 2026-08-03 07:24:09 +02:00
121 lines
2.7 KiB
Go
121 lines
2.7 KiB
Go
package doctor
|
|||
|
|
|
||
|
|
import (
|
||
|
|
"testing"
|
||
|
|
|
||
|
|
"github.com/stretchr/testify/assert"
|
||
|
|
"github.com/stretchr/testify/require"
|
||
|
|
)
|
||
|
|
|
||
|
|
func TestRunChecks_AllPass(t *testing.T) {
|
||
|
|
checks := []Check{
|
||
|
|
{
|
||
|
|
Name: "test-pass-1",
|
||
|
|
Category: "Test",
|
||
|
|
Run: func() CheckResult {
|
||
|
|
return CheckResult{Status: StatusPass, Message: "all good"}
|
||
|
|
},
|
||
|
|
},
|
||
|
|
{
|
||
|
|
Name: "test-pass-2",
|
||
|
|
Category: "Test",
|
||
|
|
Run: func() CheckResult {
|
||
|
|
return CheckResult{Status: StatusPass, Message: "also good"}
|
||
|
|
},
|
||
|
|
},
|
||
|
|
}
|
||
|
|
|
||
|
|
results := RunChecks(checks)
|
||
|
|
require.Len(t, results, 2)
|
||
|
|
assert.Equal(t, StatusPass, results[0].Status)
|
||
|
|
assert.Equal(t, StatusPass, results[1].Status)
|
||
|
|
assert.False(t, HasFailures(results))
|
||
|
|
}
|
||
|
|
|
||
|
|
func TestRunChecks_WithFailure(t *testing.T) {
|
||
|
|
checks := []Check{
|
||
|
|
{
|
||
|
|
Name: "test-pass",
|
||
|
|
Category: "Test",
|
||
|
|
Run: func() CheckResult {
|
||
|
|
return CheckResult{Status: StatusPass, Message: "ok"}
|
||
|
|
},
|
||
|
|
},
|
||
|
|
{
|
||
|
|
Name: "test-fail",
|
||
|
|
Category: "Test",
|
||
|
|
Run: func() CheckResult {
|
||
|
|
return CheckResult{Status: StatusFail, Message: "broken"}
|
||
|
|
},
|
||
|
|
},
|
||
|
|
}
|
||
|
|
|
||
|
|
results := RunChecks(checks)
|
||
|
|
require.Len(t, results, 2)
|
||
|
|
assert.True(t, HasFailures(results))
|
||
|
|
}
|
||
|
|
|
||
|
|
func TestRunChecks_WarnDoesNotCountAsFailure(t *testing.T) {
|
||
|
|
checks := []Check{
|
||
|
|
{
|
||
|
|
Name: "test-warn",
|
||
|
|
Category: "Test",
|
||
|
|
Run: func() CheckResult {
|
||
|
|
return CheckResult{Status: StatusWarn, Message: "maybe"}
|
||
|
|
},
|
||
|
|
},
|
||
|
|
}
|
||
|
|
|
||
|
|
results := RunChecks(checks)
|
||
|
|
require.Len(t, results, 1)
|
||
|
|
assert.Equal(t, StatusWarn, results[0].Status)
|
||
|
|
assert.False(t, HasFailures(results))
|
||
|
|
}
|
||
|
|
|
||
|
|
func TestRunChecks_PreservesCheckMetadata(t *testing.T) {
|
||
|
|
checks := []Check{
|
||
|
|
{
|
||
|
|
Name: "my-check",
|
||
|
|
Category: "My Category",
|
||
|
|
Run: func() CheckResult {
|
||
|
|
return CheckResult{Status: StatusPass, Message: "details"}
|
||
|
|
},
|
||
|
|
},
|
||
|
|
}
|
||
|
|
|
||
|
|
results := RunChecks(checks)
|
||
|
|
require.Len(t, results, 1)
|
||
|
|
assert.Equal(t, "my-check", results[0].Name)
|
||
|
|
assert.Equal(t, "My Category", results[0].Category)
|
||
|
|
assert.Equal(t, "details", results[0].Message)
|
||
|
|
}
|
||
|
|
|
||
|
|
func TestCategorySummary_AllPass(t *testing.T) {
|
||
|
|
results := []CheckResult{
|
||
|
|
{Category: "A", Status: StatusPass},
|
||
|
|
{Category: "A", Status: StatusPass},
|
||
|
|
}
|
||
|
|
summary := CategorySummary(results)
|
||
|
|
require.Len(t, summary, 1)
|
||
|
|
assert.Equal(t, StatusPass, summary["A"])
|
||
|
|
}
|
||
|
|
|
||
|
|
func TestCategorySummary_FailOverridesWarn(t *testing.T) {
|
||
|
|
results := []CheckResult{
|
||
|
|
{Category: "A", Status: StatusPass},
|
||
|
|
{Category: "A", Status: StatusWarn},
|
||
|
|
{Category: "A", Status: StatusFail},
|
||
|
|
}
|
||
|
|
summary := CategorySummary(results)
|
||
|
|
assert.Equal(t, StatusFail, summary["A"])
|
||
|
|
}
|
||
|
|
|
||
|
|
func TestCategorySummary_WarnOverridesPass(t *testing.T) {
|
||
|
|
results := []CheckResult{
|
||
|
|
{Category: "A", Status: StatusPass},
|
||
|
|
{Category: "A", Status: StatusWarn},
|
||
|
|
}
|
||
|
|
summary := CategorySummary(results)
|
||
|
|
assert.Equal(t, StatusWarn, summary["A"])
|
||
|
|
}
|