195 lines
5.1 KiB
Go
195 lines
5.1 KiB
Go
package ui
|
|
|
|
import (
|
|
"errors"
|
|
"strconv"
|
|
"testing"
|
|
)
|
|
|
|
func TestConfig_ValidateAndSetDefaults(t *testing.T) {
|
|
cfg := &Config{
|
|
Title: "",
|
|
Description: "",
|
|
Header: "",
|
|
Logo: "",
|
|
Link: "",
|
|
}
|
|
if err := cfg.ValidateAndSetDefaults(); err != nil {
|
|
t.Error("expected no error, got", err.Error())
|
|
}
|
|
if cfg.Title != defaultTitle {
|
|
t.Errorf("expected title to be %s, got %s", defaultTitle, cfg.Title)
|
|
}
|
|
if cfg.Description != defaultDescription {
|
|
t.Errorf("expected description to be %s, got %s", defaultDescription, cfg.Description)
|
|
}
|
|
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) {
|
|
scenarios := []struct {
|
|
Name, Link string
|
|
ExpectedError error
|
|
}{
|
|
{
|
|
Name: "",
|
|
Link: "",
|
|
ExpectedError: ErrButtonValidationFailed,
|
|
},
|
|
{
|
|
Name: "",
|
|
Link: "link",
|
|
ExpectedError: ErrButtonValidationFailed,
|
|
},
|
|
{
|
|
Name: "name",
|
|
Link: "",
|
|
ExpectedError: ErrButtonValidationFailed,
|
|
},
|
|
{
|
|
Name: "name",
|
|
Link: "link",
|
|
ExpectedError: nil,
|
|
},
|
|
}
|
|
for i, scenario := range scenarios {
|
|
t.Run(strconv.Itoa(i)+"_"+scenario.Name+"_"+scenario.Link, func(t *testing.T) {
|
|
button := &Button{
|
|
Name: scenario.Name,
|
|
Link: scenario.Link,
|
|
}
|
|
if err := button.Validate(); err != scenario.ExpectedError {
|
|
t.Errorf("expected error %v, got %v", scenario.ExpectedError, err)
|
|
}
|
|
})
|
|
}
|
|
}
|
|
|
|
func TestGetDefaultConfig(t *testing.T) {
|
|
defaultConfig := GetDefaultConfig()
|
|
if defaultConfig.Title != defaultTitle {
|
|
t.Error("expected GetDefaultConfig() to return defaultTitle, got", defaultConfig.Title)
|
|
}
|
|
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_none",
|
|
DefaultFilterBy: "none",
|
|
ExpectedError: nil,
|
|
ExpectedValue: "none",
|
|
},
|
|
{
|
|
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)
|
|
}
|
|
})
|
|
}
|
|
}
|