package db

import (
	"context"
	"testing"
	"time"
)

func TestTransactionTimeoutDefaultsAndOverrides(t *testing.T) {
	if defaultTransactionTimeout != 30*time.Second {
		t.Fatalf("unexpected default transaction timeout: %s", defaultTransactionTimeout)
	}

	want := 45 * time.Second
	startedAt := time.Now()
	ctx, cancel := contextWithTransactionTimeout(context.Background(), want)
	defer cancel()

	deadline, ok := ctx.Deadline()
	if !ok {
		t.Fatal("expected transaction context deadline")
	}
	remaining := deadline.Sub(startedAt)
	if remaining < want-time.Second || remaining > want+time.Second {
		t.Fatalf("unexpected custom transaction timeout: got %s, want approximately %s", remaining, want)
	}
}
