mirror of
https://github.com/taigrr/wtf
synced 2025-01-18 04:03:14 -08:00
103 lines
1.9 KiB
Go
103 lines
1.9 KiB
Go
package app
|
|
|
|
import (
|
|
"fmt"
|
|
"testing"
|
|
|
|
"github.com/logrusorgru/aurora"
|
|
"github.com/olebedev/config"
|
|
"github.com/stretchr/testify/assert"
|
|
"github.com/wtfutil/wtf/wtf"
|
|
)
|
|
|
|
const (
|
|
valid = `
|
|
wtf:
|
|
mods:
|
|
clocks:
|
|
enabled: true
|
|
position:
|
|
top: 0
|
|
left: 0
|
|
height: 1
|
|
width: 1
|
|
refreshInterval: 30`
|
|
|
|
invalid = `
|
|
wtf:
|
|
mods:
|
|
clocks:
|
|
enabled: true
|
|
position:
|
|
top: abc
|
|
left: 0
|
|
height: 1
|
|
width: 1
|
|
refreshInterval: 30`
|
|
)
|
|
|
|
func Test_NewModuleValidator(t *testing.T) {
|
|
assert.IsType(t, &ModuleValidator{}, NewModuleValidator())
|
|
}
|
|
|
|
func Test_validate(t *testing.T) {
|
|
tests := []struct {
|
|
name string
|
|
moduleName string
|
|
config *config.Config
|
|
expected []string
|
|
}{
|
|
{
|
|
name: "valid config",
|
|
moduleName: "clocks",
|
|
config: func() *config.Config {
|
|
cfg, _ := config.ParseYaml(valid)
|
|
return cfg
|
|
}(),
|
|
expected: []string{},
|
|
},
|
|
{
|
|
name: "invalid config",
|
|
moduleName: "clocks",
|
|
config: func() *config.Config {
|
|
cfg, _ := config.ParseYaml(invalid)
|
|
return cfg
|
|
}(),
|
|
expected: []string{
|
|
fmt.Sprintf("%s in %s configuration", aurora.Red("Errors"), aurora.Yellow("clocks.position")),
|
|
fmt.Sprintf(
|
|
" - Invalid value for %s: 0 %s strconv.ParseInt: parsing \"abc\": invalid syntax",
|
|
aurora.Yellow("top"),
|
|
aurora.Red("Error:"),
|
|
),
|
|
},
|
|
},
|
|
}
|
|
|
|
for _, tt := range tests {
|
|
t.Run(tt.name, func(t *testing.T) {
|
|
widget := MakeWidget(nil, nil, tt.moduleName, tt.config)
|
|
|
|
if widget == nil {
|
|
t.Logf("Failed to create widget %s", tt.moduleName)
|
|
t.FailNow()
|
|
}
|
|
|
|
errs := validate([]wtf.Wtfable{widget})
|
|
|
|
if len(tt.expected) == 0 {
|
|
assert.Empty(t, errs)
|
|
} else {
|
|
assert.NotEmpty(t, errs)
|
|
|
|
var actual []string
|
|
for _, err := range errs {
|
|
actual = append(actual, err.errorMessages()...)
|
|
}
|
|
|
|
assert.Equal(t, tt.expected, actual)
|
|
}
|
|
})
|
|
}
|
|
}
|