package handlers

import (
	"testing"

	"github.com/jackc/pgx/v5/pgtype"
	"github.com/stretchr/testify/assert"
	"github.com/stretchr/testify/require"
)

func TestParseLimit_Valid(t *testing.T) {
	tests := []struct {
		name     string
		input    string
		expected int32
	}{
		{"string number", "10", 10},
		{"zero", "0", 0},
		{"large number", "1000", 1000},
	}

	for _, tt := range tests {
		t.Run(tt.name, func(t *testing.T) {
			result, err := parseLimit(tt.input)
			require.NoError(t, err)
			assert.Equal(t, tt.expected, result)
		})
	}
}

func TestParseLimit_Invalid(t *testing.T) {
	tests := []struct {
		name  string
		input string
	}{
		{"non-numeric", "abc"},
	}

	for _, tt := range tests {
		t.Run(tt.name, func(t *testing.T) {
			_, err := parseLimit(tt.input)
			assert.Error(t, err)
		})
	}
}

func TestFormatUUID(t *testing.T) {
	uuidBytes := [16]byte{
		0xf4, 0x7a, 0xc1, 0x0b,
		0x58, 0xcc,
		0x43, 0x72,
		0xa5, 0x67,
		0x0e, 0x02, 0xb2, 0xc3, 0xd4, 0x79,
	}
	pgUUID := pgtype.UUID{Bytes: uuidBytes, Valid: true}

	result := formatUUID(pgUUID)
	assert.Equal(t, "f47ac10b-58cc-4372-a567-0e02b2c3d479", result)
}

func TestFormatUUID_Null(t *testing.T) {
	pgUUID := pgtype.UUID{Valid: false}

	result := formatUUID(pgUUID)
	assert.Equal(t, "", result)
}
