Files
query-orchestration/internal/fieldextraction/models_test.go
T
Jay Brown 3bdc27f4de Merged in feature/textExtractionsPart2 (pull request #193)
Continue finishing the parts of the text extraction plan

* add missing fields
2025-12-02 19:13:08 +00:00

112 lines
3.4 KiB
Go

package fieldextraction
import (
"testing"
"queryorchestration/internal/database/repository"
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require"
)
func TestValidateArrayConsistency(t *testing.T) {
t.Run("empty array is valid", func(t *testing.T) {
count, err := ValidateArrayConsistency([]*repository.AddFieldExtractionArrayFieldParams{})
require.NoError(t, err)
assert.Equal(t, 0, count)
})
t.Run("nil slice is valid", func(t *testing.T) {
count, err := ValidateArrayConsistency(nil)
require.NoError(t, err)
assert.Equal(t, 0, count)
})
t.Run("single element array is valid", func(t *testing.T) {
fields := []*repository.AddFieldExtractionArrayFieldParams{
{},
}
count, err := ValidateArrayConsistency(fields)
require.NoError(t, err)
assert.Equal(t, 1, count)
})
t.Run("multiple elements array is valid", func(t *testing.T) {
exhibitTitle1 := "Exhibit A"
exhibitTitle2 := "Exhibit B"
exhibitTitle3 := "Exhibit C"
fields := []*repository.AddFieldExtractionArrayFieldParams{
{Exhibittitle: &exhibitTitle1},
{Exhibittitle: &exhibitTitle2},
{Exhibittitle: &exhibitTitle3},
}
count, err := ValidateArrayConsistency(fields)
require.NoError(t, err)
assert.Equal(t, 3, count)
})
t.Run("nil entry in array returns error", func(t *testing.T) {
exhibitTitle := "Exhibit A"
fields := []*repository.AddFieldExtractionArrayFieldParams{
{Exhibittitle: &exhibitTitle},
nil, // nil entry
{Exhibittitle: &exhibitTitle},
}
count, err := ValidateArrayConsistency(fields)
require.Error(t, err)
assert.Equal(t, 0, count)
assert.Contains(t, err.Error(), "array field at index 1 is nil")
})
t.Run("nil entry at first position returns error", func(t *testing.T) {
exhibitTitle := "Exhibit A"
fields := []*repository.AddFieldExtractionArrayFieldParams{
nil, // nil entry at first position
{Exhibittitle: &exhibitTitle},
}
count, err := ValidateArrayConsistency(fields)
require.Error(t, err)
assert.Equal(t, 0, count)
assert.Contains(t, err.Error(), "array field at index 0 is nil")
})
t.Run("nil entry at last position returns error", func(t *testing.T) {
exhibitTitle := "Exhibit A"
fields := []*repository.AddFieldExtractionArrayFieldParams{
{Exhibittitle: &exhibitTitle},
{Exhibittitle: &exhibitTitle},
nil, // nil entry at last position
}
count, err := ValidateArrayConsistency(fields)
require.Error(t, err)
assert.Equal(t, 0, count)
assert.Contains(t, err.Error(), "array field at index 2 is nil")
})
t.Run("array at max count is valid", func(t *testing.T) {
fields := make([]*repository.AddFieldExtractionArrayFieldParams, MaxArrayFieldCount)
for i := range fields {
fields[i] = &repository.AddFieldExtractionArrayFieldParams{}
}
count, err := ValidateArrayConsistency(fields)
require.NoError(t, err)
assert.Equal(t, MaxArrayFieldCount, count)
})
t.Run("array exceeding max count returns error", func(t *testing.T) {
fields := make([]*repository.AddFieldExtractionArrayFieldParams, MaxArrayFieldCount+1)
for i := range fields {
fields[i] = &repository.AddFieldExtractionArrayFieldParams{}
}
count, err := ValidateArrayConsistency(fields)
require.Error(t, err)
assert.Equal(t, 0, count)
assert.Contains(t, err.Error(), "exceeds maximum allowed")
})
}
func TestMaxArrayFieldCount(t *testing.T) {
// Verify the constant is set to a reasonable value
assert.Equal(t, 10000, MaxArrayFieldCount, "MaxArrayFieldCount should be 10000")
}