package handle

import (
	"context"
	"encoding/json"
	"net/http"
	"net/http/httptest"
	"testing"
	"time"

	"github.com/stretchr/testify/require"
)

func TestCleanAllArchiveKeyspaceDataReturnsBeforeBulkPDFetchesWhenNoKeyspaces(t *testing.T) {
	t.Parallel()

	server := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
		require.Equal(t, "/api/v2/meta:list", r.URL.Path)
		require.Equal(t, "ARCHIVED", r.URL.Query().Get("state"))
		err := json.NewEncoder(w).Encode(map[string]any{
			"items":  []any{},
			"total":  0,
			"limit":  1000,
			"offset": 0,
		})
		require.NoError(t, err)
	}))
	defer server.Close()

	err := CleanAllArchiveKeyspaceData(
		context.Background(),
		nil,
		nil,
		nil,
		nil,
		true,
		true,
		24*time.Hour,
		nil,
		server.URL,
		0,
	)
	require.NoError(t, err)
}

func TestWaitBetweenKeyspaces(t *testing.T) {
	t.Parallel()

	start := time.Now()
	waitBetweenKeyspaces(0)
	require.Less(t, time.Since(start), 10*time.Millisecond)

	interval := 10 * time.Millisecond
	start = time.Now()
	waitBetweenKeyspaces(interval)
	require.GreaterOrEqual(t, time.Since(start), interval)
}
