diff --git a/client_test.go b/client_test.go new file mode 100644 index 0000000..8394936 --- /dev/null +++ b/client_test.go @@ -0,0 +1,52 @@ +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) + } + } +}