package service

import (
	"context"
	"testing"
	"time"

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

func TestDataProxyQueryContextUsesRequestTimeout(t *testing.T) {
	ctx, cancel := dataProxyQueryContext(context.Background(), 20*time.Millisecond)
	defer cancel()

	select {
	case <-ctx.Done():
		require.ErrorIs(t, ctx.Err(), context.DeadlineExceeded)
	case <-time.After(time.Second):
		t.Fatal("query context did not honor the request timeout")
	}
}

func TestDataProxyQueryContextUsesDefaultTimeout(t *testing.T) {
	before := time.Now().Add(defaultDataProxyQueryTimeout)
	ctx, cancel := dataProxyQueryContext(context.Background(), 0)
	defer cancel()
	deadline, ok := ctx.Deadline()
	require.True(t, ok)
	require.WithinDuration(t, before, deadline, time.Second)
}
