2
0
mirror of https://github.com/hibiken/asynq.git synced 2024-11-10 11:31:58 +08:00
asynq/client_test.go

53 lines
1.3 KiB
Go
Raw Normal View History

2019-11-30 09:40:31 +08:00
package asynq
import (
"testing"
"time"
)
func TestClient(t *testing.T) {
r := setup(t)
client := &Client{rdb: r}
tests := []struct {
task *Task
processAt time.Time
wantQueueSize int64
wantScheduledSize int64
}{
{
task: &Task{Type: "send_email", Payload: map[string]interface{}{"to": "customer@gmail.com", "from": "merchant@example.com"}},
processAt: time.Now(),
wantQueueSize: 1,
wantScheduledSize: 0,
},
{
task: &Task{Type: "send_email", Payload: map[string]interface{}{"to": "customer@gmail.com", "from": "merchant@example.com"}},
processAt: time.Now().Add(2 * time.Hour),
wantQueueSize: 0,
wantScheduledSize: 1,
},
}
for _, tc := range tests {
// clean up db before each test case.
if err := r.client.FlushDB().Err(); err != nil {
t.Fatal(err)
}
err := client.Process(tc.task, tc.processAt)
if err != nil {
t.Error(err)
continue
}
if l := r.client.LLen(defaultQueue).Val(); l != tc.wantQueueSize {
t.Errorf("%q has length %d, want %d", defaultQueue, l, tc.wantQueueSize)
}
if l := r.client.ZCard(scheduled).Val(); l != tc.wantScheduledSize {
t.Errorf("%q has length %d, want %d", scheduled, l, tc.wantScheduledSize)
}
}
}