205 lines
4.0 KiB
Go
205 lines
4.0 KiB
Go
package index
|
|
|
|
import (
|
|
"context"
|
|
"testing"
|
|
"time"
|
|
)
|
|
|
|
// TestMappingIntegration tests mapping operations.
|
|
func TestMappingIntegration(t *testing.T) {
|
|
if testing.Short() {
|
|
t.Skip("skipping integration test in short mode")
|
|
}
|
|
|
|
c := setupIntegrationTest(t)
|
|
ctx, cancel := context.WithTimeout(context.Background(), 60*time.Second)
|
|
defer cancel()
|
|
|
|
indexName := "test-mapping-integration"
|
|
|
|
// Setup index
|
|
err := CreateIndex(ctx, c, indexName, nil)
|
|
if err != nil {
|
|
t.Fatalf("setup: CreateIndex() error = %v", err)
|
|
}
|
|
|
|
defer func() {
|
|
_ = DeleteIndex(ctx, c, indexName)
|
|
}()
|
|
|
|
// Test 1: Add field
|
|
t.Run("AddField", func(t *testing.T) {
|
|
mapping := FieldMapping{
|
|
Type: "text",
|
|
}
|
|
|
|
err := AddField(ctx, c, indexName, "new_field", mapping)
|
|
if err != nil {
|
|
t.Fatalf("AddField() error = %v", err)
|
|
}
|
|
|
|
t.Log("Field added successfully")
|
|
})
|
|
|
|
// Test 2: Get mapping
|
|
t.Run("GetMapping", func(t *testing.T) {
|
|
mappings, err := GetMapping(ctx, c, indexName)
|
|
if err != nil {
|
|
t.Fatalf("GetMapping() error = %v", err)
|
|
}
|
|
|
|
if mappings == nil {
|
|
t.Error("GetMapping() returned nil")
|
|
}
|
|
|
|
t.Logf("Retrieved mappings for index %s", indexName)
|
|
})
|
|
|
|
// Test 3: Put mapping with multiple fields
|
|
t.Run("PutMapping", func(t *testing.T) {
|
|
properties := map[string]FieldMapping{
|
|
"title": {
|
|
Type: "text",
|
|
},
|
|
"count": {
|
|
Type: "integer",
|
|
},
|
|
"timestamp": {
|
|
Type: "date",
|
|
Format: "yyyy-MM-dd HH:mm:ss||yyyy-MM-dd||epoch_millis",
|
|
},
|
|
}
|
|
|
|
err := PutMapping(ctx, c, indexName, properties)
|
|
if err != nil {
|
|
t.Fatalf("PutMapping() error = %v", err)
|
|
}
|
|
|
|
t.Log("Mapping updated successfully")
|
|
})
|
|
}
|
|
|
|
func TestPutMapping(t *testing.T) {
|
|
if testing.Short() {
|
|
t.Skip("skipping integration test in short mode")
|
|
}
|
|
|
|
c := setupIntegrationTest(t)
|
|
ctx, cancel := context.WithTimeout(context.Background(), 30*time.Second)
|
|
defer cancel()
|
|
|
|
indexName := "test-put-mapping"
|
|
|
|
// Cleanup any existing index first
|
|
_ = DeleteIndex(ctx, c, indexName)
|
|
|
|
// Setup
|
|
err := CreateIndex(ctx, c, indexName, nil)
|
|
if err != nil {
|
|
t.Fatalf("setup: CreateIndex() error = %v", err)
|
|
}
|
|
|
|
defer func() {
|
|
_ = DeleteIndex(ctx, c, indexName)
|
|
}()
|
|
|
|
properties := map[string]FieldMapping{
|
|
"name": {
|
|
Type: "text",
|
|
},
|
|
"age": {
|
|
Type: "integer",
|
|
},
|
|
}
|
|
|
|
err = PutMapping(ctx, c, indexName, properties)
|
|
if err != nil {
|
|
t.Fatalf("PutMapping() error = %v", err)
|
|
}
|
|
|
|
t.Log("PutMapping succeeded")
|
|
}
|
|
|
|
func TestGetMapping(t *testing.T) {
|
|
if testing.Short() {
|
|
t.Skip("skipping integration test in short mode")
|
|
}
|
|
|
|
c := setupIntegrationTest(t)
|
|
ctx, cancel := context.WithTimeout(context.Background(), 30*time.Second)
|
|
defer cancel()
|
|
|
|
indexName := "test-get-mapping"
|
|
|
|
// Cleanup any existing index first
|
|
_ = DeleteIndex(ctx, c, indexName)
|
|
|
|
// Setup with initial mapping
|
|
config := &IndexConfig{
|
|
Mappings: map[string]any{
|
|
"properties": map[string]any{
|
|
"field1": map[string]any{
|
|
"type": "text",
|
|
},
|
|
},
|
|
},
|
|
}
|
|
|
|
err := CreateIndex(ctx, c, indexName, config)
|
|
if err != nil {
|
|
t.Fatalf("setup: CreateIndex() error = %v", err)
|
|
}
|
|
|
|
defer func() {
|
|
_ = DeleteIndex(ctx, c, indexName)
|
|
}()
|
|
|
|
mappings, err := GetMapping(ctx, c, indexName)
|
|
if err != nil {
|
|
t.Fatalf("GetMapping() error = %v", err)
|
|
}
|
|
|
|
if mappings == nil {
|
|
t.Error("GetMapping() returned nil")
|
|
}
|
|
|
|
t.Log("GetMapping succeeded")
|
|
}
|
|
|
|
func TestAddField(t *testing.T) {
|
|
if testing.Short() {
|
|
t.Skip("skipping integration test in short mode")
|
|
}
|
|
|
|
c := setupIntegrationTest(t)
|
|
ctx, cancel := context.WithTimeout(context.Background(), 30*time.Second)
|
|
defer cancel()
|
|
|
|
indexName := "test-add-field"
|
|
|
|
// Cleanup any existing index first
|
|
_ = DeleteIndex(ctx, c, indexName)
|
|
|
|
// Setup
|
|
err := CreateIndex(ctx, c, indexName, nil)
|
|
if err != nil {
|
|
t.Fatalf("setup: CreateIndex() error = %v", err)
|
|
}
|
|
|
|
defer func() {
|
|
_ = DeleteIndex(ctx, c, indexName)
|
|
}()
|
|
|
|
mapping := FieldMapping{
|
|
Type: "keyword",
|
|
}
|
|
|
|
err = AddField(ctx, c, indexName, "status", mapping)
|
|
if err != nil {
|
|
t.Fatalf("AddField() error = %v", err)
|
|
}
|
|
|
|
t.Log("AddField succeeded")
|
|
}
|