3bdc27f4de
Continue finishing the parts of the text extraction plan * add missing fields
112 lines
3.4 KiB
Go
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")
|
|
}
|