6 "github.com/stretchr/testify/assert"
13 func (hook *TestHook) Fire(entry *Entry) error {
18 func (hook *TestHook) Levels() []Level {
29 func TestHookFires(t *testing.T) {
32 LogAndAssertJSON(t, func(log *Logger) {
34 assert.Equal(t, hook.Fired, false)
37 }, func(fields Fields) {
38 assert.Equal(t, hook.Fired, true)
42 type ModifyHook struct {
45 func (hook *ModifyHook) Fire(entry *Entry) error {
46 entry.Data["wow"] = "whale"
50 func (hook *ModifyHook) Levels() []Level {
61 func TestHookCanModifyEntry(t *testing.T) {
62 hook := new(ModifyHook)
64 LogAndAssertJSON(t, func(log *Logger) {
66 log.WithField("wow", "elephant").Print("test")
67 }, func(fields Fields) {
68 assert.Equal(t, fields["wow"], "whale")
72 func TestCanFireMultipleHooks(t *testing.T) {
73 hook1 := new(ModifyHook)
74 hook2 := new(TestHook)
76 LogAndAssertJSON(t, func(log *Logger) {
80 log.WithField("wow", "elephant").Print("test")
81 }, func(fields Fields) {
82 assert.Equal(t, fields["wow"], "whale")
83 assert.Equal(t, hook2.Fired, true)
87 type ErrorHook struct {
91 func (hook *ErrorHook) Fire(entry *Entry) error {
96 func (hook *ErrorHook) Levels() []Level {
102 func TestErrorHookShouldntFireOnInfo(t *testing.T) {
103 hook := new(ErrorHook)
105 LogAndAssertJSON(t, func(log *Logger) {
108 }, func(fields Fields) {
109 assert.Equal(t, hook.Fired, false)
113 func TestErrorHookShouldFireOnError(t *testing.T) {
114 hook := new(ErrorHook)
116 LogAndAssertJSON(t, func(log *Logger) {
119 }, func(fields Fields) {
120 assert.Equal(t, hook.Fired, true)