package ttl_task

import (
	"testing"
	"time"
)

// TestPickTask used to test pickTasks
func TestPickTask(t *testing.T) {
	h := &handler{}

	// Test data
	pendingTasks := []*PendingTask{
		{KeyspaceName: "ks1", RegisteredAt: time.Unix(1700995200, 0)},
		{KeyspaceName: "ks2", RegisteredAt: time.Unix(1700908800, 0)},
		{KeyspaceName: "ks1", RegisteredAt: time.Unix(1701081600, 0)},
		{KeyspaceName: "ks3", RegisteredAt: time.Unix(1700829600, 0)},
	}

	expected := []*PendingTask{
		{KeyspaceName: "ks3", RegisteredAt: time.Unix(1700829600, 0)},
		{KeyspaceName: "ks2", RegisteredAt: time.Unix(1700908800, 0)},
		{KeyspaceName: "ks1", RegisteredAt: time.Unix(1700995200, 0)},
	}

	// Call pickTasks.
	result := h.pickTasks(pendingTasks)

	// Check result.
	if len(result) != len(expected) {
		t.Fatalf("Expected %d tasks, got %d", len(expected), len(result))
	}

	for i, task := range result {
		if task.KeyspaceName != expected[i].KeyspaceName || !task.RegisteredAt.Equal(expected[i].RegisteredAt) {
			t.Errorf("At index %d, expected task %+v, got %+v", i, expected[i], task)
		}
	}
}
