2
0
mirror of https://github.com/hibiken/asynq.git synced 2024-11-14 11:31:18 +08:00
asynq/processor_test.go

56 lines
1.2 KiB
Go
Raw Normal View History

2019-11-28 06:03:04 +08:00
package asynq
import (
"fmt"
"testing"
)
func TestPerform(t *testing.T) {
tests := []struct {
desc string
handler TaskHandler
task *Task
wantErr bool
}{
{
desc: "handler returns nil",
handler: func(t *Task) error {
fmt.Println("processing...")
return nil
},
task: &Task{Type: "gen_thumbnail", Payload: map[string]interface{}{"src": "some/img/path"}},
wantErr: false,
},
{
desc: "handler returns error",
handler: func(t *Task) error {
fmt.Println("processing...")
return fmt.Errorf("something went wrong")
},
task: &Task{Type: "gen_thumbnail", Payload: map[string]interface{}{"src": "some/img/path"}},
wantErr: true,
},
{
desc: "handler panics",
handler: func(t *Task) error {
fmt.Println("processing...")
panic("something went terribly wrong")
},
task: &Task{Type: "gen_thumbnail", Payload: map[string]interface{}{"src": "some/img/path"}},
wantErr: true,
},
}
for _, tc := range tests {
got := perform(tc.handler, tc.task)
if !tc.wantErr && got != nil {
t.Errorf("%s: perform() = %v, want nil", tc.desc, got)
continue
}
if tc.wantErr && got == nil {
t.Errorf("%s: perform() = nil, want non-nil error", tc.desc)
continue
}
}
}