tercul-backend/internal/platform/search/weaviate_wrapper_test.go
Damir Mukimov ede3d04e4e
Merge main into feature-full-text-search: Add SearchAlpha support to hybrid search
- Merged main branch improvements (better search structure with SearchResultItem)
- Added SearchAlpha config parameter for hybrid search tuning (default: 0.7)
- Updated NewWeaviateWrapper to accept host and searchAlpha parameters
- Fixed all type mismatches in mocks and tests
- Updated GraphQL resolver to use new SearchResults structure
- All tests and vet checks passing
2025-11-30 03:32:44 +01:00

52 lines
1.2 KiB
Go

package search
import (
"context"
"testing"
"tercul/internal/domain"
domainsearch "tercul/internal/domain/search"
"github.com/stretchr/testify/assert"
)
func TestWeaviateWrapper_Search(t *testing.T) {
mockWrapper := new(MockWeaviateWrapper)
expectedResults := &domainsearch.SearchResults{
Results: []domainsearch.SearchResultItem{
{
Type: "Work",
Entity: domain.Work{
Title: "Work 1",
Description: "alpha beta",
TranslatableModel: domain.TranslatableModel{Language: "en"},
},
Score: 0.95,
},
},
TotalResults: 1,
Limit: 1,
Offset: 0,
}
params := domainsearch.SearchParams{
Query: "alpha",
Mode: domainsearch.SearchModeHybrid,
Filters: domainsearch.SearchFilters{
Languages: []string{"en"},
},
Limit: 1,
Offset: 0,
}
mockWrapper.On("Search", context.Background(), params).Return(expectedResults, nil)
results, err := mockWrapper.Search(context.Background(), params)
assert.NoError(t, err)
assert.NotNil(t, results)
assert.Equal(t, 1, len(results.Results))
assert.Equal(t, "Work", results.Results[0].Type)
work := results.Results[0].Entity.(domain.Work)
assert.Equal(t, "Work 1", work.Title)
mockWrapper.AssertExpectations(t)
}