package bleve import ( "os" "tercul/internal/domain" "testing" "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" ) func TestBleveClient(t *testing.T) { // Temporary index path for testing tempIndexPath := "test_bleve_index" defer func() { _ = os.RemoveAll(tempIndexPath) }() // Clean up after the test // Initialize a new Bleve client client, err := NewBleveClient(tempIndexPath) require.NoError(t, err, "Failed to create a new Bleve client") defer func() { _ = client.Close() }() // Define test cases for AddTranslation and Search tests := []struct { name string translation domain.Translation searchQuery string expectedHits int }{ { name: "Index and search single translation", translation: domain.Translation{ BaseModel: domain.BaseModel{ID: 1}, Title: "Golang Basics", Content: "Learn Go programming", Language: "en", }, searchQuery: "Golang", expectedHits: 1, }, { name: "No matches for unrelated query", translation: domain.Translation{ BaseModel: domain.BaseModel{ID: 2}, Title: "Python Basics", Content: "Learn Python programming", Language: "en", }, searchQuery: "Rust", expectedHits: 0, }, { name: "Index and search multiple translations", translation: domain.Translation{ BaseModel: domain.BaseModel{ID: 3}, Title: "Advanced Go", Content: "Deep dive into Go programming", Language: "en", }, searchQuery: "Go", expectedHits: 2, }, } for _, tt := range tests { t.Run(tt.name, func(t *testing.T) { // Index the translation err := client.AddTranslation(tt.translation) require.NoError(t, err, "Failed to index translation") // Perform the search with empty filters result, err := client.Search(tt.searchQuery, map[string]string{}, 10) require.NoError(t, err, "Search query failed") assert.GreaterOrEqual(t, len(result.Hits), tt.expectedHits, "Unexpected number of hits") }) } } func TestBleveClientInitialization(t *testing.T) { tempIndexPath := "test_init_index" defer func() { _ = os.RemoveAll(tempIndexPath) }() // Clean up t.Run("New Index Initialization", func(t *testing.T) { client, err := NewBleveClient(tempIndexPath) require.NoError(t, err, "Failed to initialize a new index") defer func() { _ = client.Close() }() assert.NotNil(t, client.index, "Index should not be nil") }) t.Run("Open Existing Index", func(t *testing.T) { client, err := NewBleveClient(tempIndexPath) require.NoError(t, err, "Failed to open an existing index") defer func() { _ = client.Close() }() assert.NotNil(t, client.index, "Index should not be nil") }) }