feat(ui): New status page UI (#1198)
* feat(ui): New status page UI * docs: Rename labels to extra-labels * Fix domain expiration test * feat(ui): Add ui.default-sort-by and ui.default-filter-by * Change ui.header default value to Gatus * Re-use EndpointCard in Details.vue as well to avoid duplicate code * Fix flaky metrics test * Add subtle green color to "Gatus" * Remove duplicate title (tooltip is sufficient, no need for title on top of that) * Fix collapsed group user preferences * Update status page screenshots
This commit is contained in:
@@ -1,6 +1,7 @@
|
||||
package ui
|
||||
|
||||
import (
|
||||
"errors"
|
||||
"strconv"
|
||||
"testing"
|
||||
)
|
||||
@@ -25,6 +26,12 @@ func TestConfig_ValidateAndSetDefaults(t *testing.T) {
|
||||
if cfg.Header != defaultHeader {
|
||||
t.Errorf("expected header to be %s, got %s", defaultHeader, cfg.Header)
|
||||
}
|
||||
if cfg.DefaultSortBy != defaultSortBy {
|
||||
t.Errorf("expected defaultSortBy to be %s, got %s", defaultSortBy, cfg.DefaultSortBy)
|
||||
}
|
||||
if cfg.DefaultFilterBy != defaultFilterBy {
|
||||
t.Errorf("expected defaultFilterBy to be %s, got %s", defaultFilterBy, cfg.DefaultFilterBy)
|
||||
}
|
||||
}
|
||||
|
||||
func TestButton_Validate(t *testing.T) {
|
||||
@@ -74,4 +81,114 @@ func TestGetDefaultConfig(t *testing.T) {
|
||||
if defaultConfig.Logo != defaultLogo {
|
||||
t.Error("expected GetDefaultConfig() to return defaultLogo, got", defaultConfig.Logo)
|
||||
}
|
||||
if defaultConfig.DefaultSortBy != defaultSortBy {
|
||||
t.Error("expected GetDefaultConfig() to return defaultSortBy, got", defaultConfig.DefaultSortBy)
|
||||
}
|
||||
if defaultConfig.DefaultFilterBy != defaultFilterBy {
|
||||
t.Error("expected GetDefaultConfig() to return defaultFilterBy, got", defaultConfig.DefaultFilterBy)
|
||||
}
|
||||
}
|
||||
|
||||
func TestConfig_ValidateAndSetDefaults_DefaultSortBy(t *testing.T) {
|
||||
scenarios := []struct {
|
||||
Name string
|
||||
DefaultSortBy string
|
||||
ExpectedError error
|
||||
ExpectedValue string
|
||||
}{
|
||||
{
|
||||
Name: "EmptyDefaultSortBy",
|
||||
DefaultSortBy: "",
|
||||
ExpectedError: nil,
|
||||
ExpectedValue: defaultSortBy,
|
||||
},
|
||||
{
|
||||
Name: "ValidDefaultSortBy_name",
|
||||
DefaultSortBy: "name",
|
||||
ExpectedError: nil,
|
||||
ExpectedValue: "name",
|
||||
},
|
||||
{
|
||||
Name: "ValidDefaultSortBy_group",
|
||||
DefaultSortBy: "group",
|
||||
ExpectedError: nil,
|
||||
ExpectedValue: "group",
|
||||
},
|
||||
{
|
||||
Name: "ValidDefaultSortBy_health",
|
||||
DefaultSortBy: "health",
|
||||
ExpectedError: nil,
|
||||
ExpectedValue: "health",
|
||||
},
|
||||
{
|
||||
Name: "InvalidDefaultSortBy",
|
||||
DefaultSortBy: "invalid",
|
||||
ExpectedError: ErrInvalidDefaultSortBy,
|
||||
ExpectedValue: "invalid",
|
||||
},
|
||||
}
|
||||
for _, scenario := range scenarios {
|
||||
t.Run(scenario.Name, func(t *testing.T) {
|
||||
cfg := &Config{DefaultSortBy: scenario.DefaultSortBy}
|
||||
err := cfg.ValidateAndSetDefaults()
|
||||
if !errors.Is(err, scenario.ExpectedError) {
|
||||
t.Errorf("expected error %v, got %v", scenario.ExpectedError, err)
|
||||
}
|
||||
if cfg.DefaultSortBy != scenario.ExpectedValue {
|
||||
t.Errorf("expected DefaultSortBy to be %s, got %s", scenario.ExpectedValue, cfg.DefaultSortBy)
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
func TestConfig_ValidateAndSetDefaults_DefaultFilterBy(t *testing.T) {
|
||||
scenarios := []struct {
|
||||
Name string
|
||||
DefaultFilterBy string
|
||||
ExpectedError error
|
||||
ExpectedValue string
|
||||
}{
|
||||
{
|
||||
Name: "EmptyDefaultFilterBy",
|
||||
DefaultFilterBy: "",
|
||||
ExpectedError: nil,
|
||||
ExpectedValue: defaultFilterBy,
|
||||
},
|
||||
{
|
||||
Name: "ValidDefaultFilterBy_nothing",
|
||||
DefaultFilterBy: "nothing",
|
||||
ExpectedError: nil,
|
||||
ExpectedValue: "nothing",
|
||||
},
|
||||
{
|
||||
Name: "ValidDefaultFilterBy_failing",
|
||||
DefaultFilterBy: "failing",
|
||||
ExpectedError: nil,
|
||||
ExpectedValue: "failing",
|
||||
},
|
||||
{
|
||||
Name: "ValidDefaultFilterBy_unstable",
|
||||
DefaultFilterBy: "unstable",
|
||||
ExpectedError: nil,
|
||||
ExpectedValue: "unstable",
|
||||
},
|
||||
{
|
||||
Name: "InvalidDefaultFilterBy",
|
||||
DefaultFilterBy: "invalid",
|
||||
ExpectedError: ErrInvalidDefaultFilterBy,
|
||||
ExpectedValue: "invalid",
|
||||
},
|
||||
}
|
||||
for _, scenario := range scenarios {
|
||||
t.Run(scenario.Name, func(t *testing.T) {
|
||||
cfg := &Config{DefaultFilterBy: scenario.DefaultFilterBy}
|
||||
err := cfg.ValidateAndSetDefaults()
|
||||
if !errors.Is(err, scenario.ExpectedError) {
|
||||
t.Errorf("expected error %v, got %v", scenario.ExpectedError, err)
|
||||
}
|
||||
if cfg.DefaultFilterBy != scenario.ExpectedValue {
|
||||
t.Errorf("expected DefaultFilterBy to be %s, got %s", scenario.ExpectedValue, cfg.DefaultFilterBy)
|
||||
}
|
||||
})
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user