Select Git revision
error-handler_test.go

Volker Schukai authored
error-handler_test.go 1.08 KiB
// Copyright 2022 schukai GmbH
// SPDX-License-Identifier: AGPL-3.0
package configuration
import (
"github.com/stretchr/testify/assert"
"testing"
"time"
)
type mockTestEventErrorHandler struct {
ErrorHook
ch chan bool
}
func (m *mockTestEventErrorHandler) Handle(event ErrorEvent) {
// do nothing
m.ch <- true
}
func TestErrorHandling(t *testing.T) {
defaults := ConfigStruct2{
A: "Hello!",
}
c := New(defaults)
var h ErrorHook
h = &mockTestEventErrorHandler{
ch: make(chan bool),
}
c.OnError(h)
c.SetDefaultDirectories()
select {
case <-h.(*mockTestEventErrorHandler).ch:
assert.True(t, true)
case <-time.After(11 * time.Second):
t.Error("Timeout, expected error event")
}
}
func TestAddRemoveErrorHook(t *testing.T) {
config := struct {
Host string
}{
Host: "localhost",
}
s := New(config)
var h ErrorHook
h = &mockTestEventErrorHandler{}
s.OnError(h)
if len(s.hooks.error) != 1 {
t.Error("Expected 1 got ", len(s.hooks.change))
}
s.RemoveOnErrorHook(h)
if len(s.hooks.error) != 0 {
t.Error("Expected 0 got ", len(s.hooks.change))
}
}