github.com/ngicks/gokugen@v0.0.5/middleware/log/log_test.go (about) 1 package log_test 2 3 import ( 4 "context" 5 "errors" 6 "testing" 7 "time" 8 9 "github.com/golang/mock/gomock" 10 "github.com/ngicks/gokugen" 11 mock_gokugen "github.com/ngicks/gokugen/__mock" 12 logmw "github.com/ngicks/gokugen/middleware/log" 13 mock_log "github.com/ngicks/gokugen/middleware/log/__mock" 14 ) 15 16 func TestLog(t *testing.T) { 17 ctrl := gomock.NewController(t) 18 mockLogger := mock_log.NewMockLogger(ctrl) 19 20 mockErr := errors.New("mock error") 21 mockLogger. 22 EXPECT(). 23 Info( 24 gomock.Any(), // value 25 gomock.Any(), // "scheduled_at" label 26 gomock.Any(), // "scheduled_at" value 27 gomock.Any(), // "task_id" label 28 gomock.Any(), // "task_id" value 29 gomock.Any(), // "work_id" label 30 gomock.Any(), // "work_id" value 31 gomock.Any(), // "timing" label 32 gomock.Any(), // "timing" value 33 ). 34 // 2 if successful, 1 if error 35 Times(3) 36 mockLogger. 37 EXPECT(). 38 Error( 39 gomock.Any(), 40 gomock.Any(), 41 gomock.Any(), 42 gomock.Any(), 43 gomock.Any(), 44 gomock.Any(), 45 gomock.Any(), 46 gomock.Any(), 47 gomock.Any(), 48 ). 49 Times(1) 50 51 _, 52 mockSched, getTrappedTask := mock_gokugen.BuildMockScheduler(t) 53 54 ma := gokugen.NewMiddlewareApplicator(mockSched) 55 56 inputCtx := gokugen.BuildContext( 57 time.Now(), 58 func(taskCtx context.Context, scheduled time.Time) (any, error) { 59 return "baz", nil 60 }, 61 nil, 62 gokugen.WithTaskId("foo"), 63 gokugen.WithWorkId("bar"), 64 ) 65 inputError := gokugen.BuildContext( 66 time.Now(), 67 func(taskCtx context.Context, scheduled time.Time) (any, error) { 68 return "", mockErr 69 }, 70 nil, 71 gokugen.WithTaskId("qux"), 72 gokugen.WithWorkId("quux"), 73 ) 74 75 ma.Use( 76 logmw.New(mockLogger).Middleware, 77 ) 78 79 ma.Schedule(inputCtx) 80 getTrappedTask().Do(context.TODO()) 81 ma.Schedule(inputError) 82 getTrappedTask().Do(context.TODO()) 83 }