Skip to content

Commit 314344a

Browse files
committed
Handler multi call moved to internal/handler pkg with tests
1 parent 4a30688 commit 314344a

File tree

3 files changed

+61
-46
lines changed

3 files changed

+61
-46
lines changed

handlers.go

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,6 @@ package err2
33
import (
44
"fmt"
55
"os"
6-
)
76

87
"github.com/lainio/err2/internal/handler"
98
)
@@ -65,3 +64,11 @@ func Err(f func(err error)) Handler {
6564
return err
6665
}
6766
}
67+
68+
const lvl = 10
69+
70+
// Log prints error string to the current log that is set by SetLogTracer.
71+
func Log(err error) error {
72+
_ = handler.LogOutput(lvl, err.Error())
73+
return err
74+
}

handlers_test.go

Lines changed: 0 additions & 45 deletions
This file was deleted.

internal/handler/handlers_test.go

Lines changed: 53 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,53 @@
1+
package handler_test
2+
3+
import (
4+
"testing"
5+
6+
"github.com/lainio/err2"
7+
"github.com/lainio/err2/internal/handler"
8+
"github.com/lainio/err2/internal/test"
9+
)
10+
11+
func TestHandlers(t *testing.T) {
12+
t.Parallel()
13+
type args struct {
14+
f []any // we use any because it's same as real-world case at start
15+
}
16+
tests := []struct {
17+
name string
18+
args args
19+
want error
20+
}{
21+
{"one", args{f: []any{err2.Noop}}, err2.ErrNotFound},
22+
{"two", args{f: []any{err2.Noop, err2.Noop}}, err2.ErrNotFound},
23+
{"three", args{f: []any{err2.Noop, err2.Noop, err2.Noop}}, err2.ErrNotFound},
24+
{"reset", args{f: []any{err2.Noop, err2.Noop, err2.Reset}}, nil},
25+
{"reset first", args{f: []any{err2.Reset, err2.Noop, err2.Noop}}, nil},
26+
{"reset second", args{f: []any{err2.Noop, err2.Reset, err2.Noop}}, nil},
27+
{"set new first", args{f: []any{
28+
func(error) error { return err2.ErrAlreadyExist }, err2.Noop}}, err2.ErrAlreadyExist},
29+
{"set new second", args{f: []any{err2.Noop,
30+
func(error) error { return err2.ErrAlreadyExist }, err2.Noop}}, err2.ErrAlreadyExist},
31+
{"set new first and reset", args{f: []any{
32+
func(error) error { return err2.ErrAlreadyExist }, err2.Reset}}, nil},
33+
}
34+
for _, tt := range tests {
35+
tt := tt
36+
t.Run(tt.name, func(t *testing.T) {
37+
t.Parallel()
38+
anys := tt.args.f
39+
40+
test.Require(t, anys != nil, "cannot be nil")
41+
fns := handler.AssertErrHandlers(anys)
42+
test.Require(t, fns != nil, "cannot be nil")
43+
44+
errHandler := handler.Pipeline(fns)
45+
err := errHandler(err2.ErrNotFound)
46+
if err == nil {
47+
test.Require(t, tt.want == nil)
48+
} else {
49+
test.RequireEqual(t, err.Error(), tt.want.Error())
50+
}
51+
})
52+
}
53+
}

0 commit comments

Comments
 (0)