go-transaction-manager
135 строк · 2.2 Кб
1package trm
2
3import (
4"errors"
5"testing"
6
7"github.com/stretchr/testify/assert"
8)
9
10var errTest = errors.New("test")
11
12func TestIsSkippable(t *testing.T) {
13t.Parallel()
14
15type args struct {
16err error
17}
18
19tests := map[string]struct {
20args args
21want bool
22}{
23"skippable": {
24args: args{
25err: Skippable(Skippable(errTest)),
26},
27want: true,
28},
29"unSkippable": {
30args: args{
31err: errTest,
32},
33want: false,
34},
35"nil": {
36args: args{
37err: nil,
38},
39want: false,
40},
41}
42for name, tt := range tests {
43tt := tt
44t.Run(name, func(t *testing.T) {
45t.Parallel()
46
47got := IsSkippable(tt.args.err)
48
49assert.Equal(t, tt.want, got)
50})
51}
52}
53
54func TestSkippable(t *testing.T) {
55t.Parallel()
56
57type args struct {
58err error
59}
60
61tests := map[string]struct {
62args args
63wantErr assert.ErrorAssertionFunc
64}{
65"skippable": {
66args: args{
67err: Skippable(Skippable(errTest)),
68},
69wantErr: func(t assert.TestingT, err error, _ ...interface{}) bool {
70return assert.ErrorIs(t, err, ErrSkip) &&
71assert.ErrorIs(t, err, errTest)
72},
73},
74"nil": {
75args: args{
76err: Skippable(Skippable(nil)),
77},
78wantErr: func(t assert.TestingT, err error, _ ...interface{}) bool {
79return assert.Nil(t, err)
80},
81},
82}
83for name, tt := range tests {
84tt := tt
85t.Run(name, func(t *testing.T) {
86t.Parallel()
87
88err := Skippable(tt.args.err)
89
90tt.wantErr(t, err)
91})
92}
93}
94
95func TestUnSkippable(t *testing.T) {
96t.Parallel()
97
98type args struct {
99err error
100}
101
102tests := map[string]struct {
103args args
104wantErr assert.ErrorAssertionFunc
105}{
106"unSkippable": {
107args: args{
108err: UnSkippable(UnSkippable(
109Skippable(Skippable(errTest)))),
110},
111wantErr: func(t assert.TestingT, err error, _ ...interface{}) bool {
112return assert.NotErrorIs(t, err, ErrSkip) &&
113assert.ErrorIs(t, err, errTest)
114},
115},
116"nil": {
117args: args{
118err: UnSkippable(UnSkippable(nil)),
119},
120wantErr: func(t assert.TestingT, err error, _ ...interface{}) bool {
121return assert.Nil(t, err)
122},
123},
124}
125for name, tt := range tests {
126tt := tt
127t.Run(name, func(t *testing.T) {
128t.Parallel()
129
130err := UnSkippable(tt.args.err)
131
132tt.wantErr(t, err)
133})
134}
135}
136