Spaces:
Running
Running
// _ _ | |
// __ _____ __ ___ ___ __ _| |_ ___ | |
// \ \ /\ / / _ \/ _` \ \ / / |/ _` | __/ _ \ | |
// \ V V / __/ (_| |\ V /| | (_| | || __/ | |
// \_/\_/ \___|\__,_| \_/ |_|\__,_|\__\___| | |
// | |
// Copyright © 2016 - 2024 Weaviate B.V. All rights reserved. | |
// | |
// CONTACT: [email protected] | |
// | |
package summary | |
import ( | |
"context" | |
"testing" | |
"github.com/stretchr/testify/assert" | |
"github.com/stretchr/testify/require" | |
"github.com/weaviate/weaviate/entities/search" | |
"github.com/weaviate/weaviate/modules/sum-transformers/ent" | |
) | |
func TestAdditionalAnswerProvider(t *testing.T) { | |
t.Run("should fail with empty content", func(t *testing.T) { | |
// given | |
sumClient := &fakeSUMClient{} | |
summaryProvider := New(sumClient) | |
in := []search.Result{ | |
{ | |
ID: "some-uuid", | |
}, | |
} | |
fakeParams := &Params{} | |
limit := 1 | |
argumentModuleParams := map[string]interface{}{} | |
// when | |
out, err := summaryProvider.AdditionalPropertyFn(context.Background(), in, fakeParams, &limit, argumentModuleParams, nil) | |
// then | |
require.NotNil(t, err) | |
require.NotEmpty(t, out) | |
assert.Error(t, err, "empty schema content") | |
}) | |
t.Run("should fail with empty params", func(t *testing.T) { | |
// given | |
sumClient := &fakeSUMClient{} | |
summaryProvider := New(sumClient) | |
in := []search.Result{ | |
{ | |
ID: "some-uuid", | |
Schema: map[string]interface{}{ | |
"content": "content", | |
}, | |
}, | |
} | |
fakeParams := &Params{} | |
limit := 1 | |
argumentModuleParams := map[string]interface{}{} | |
// when | |
out, err := summaryProvider.AdditionalPropertyFn(context.Background(), in, fakeParams, &limit, argumentModuleParams, nil) | |
// then | |
require.NotNil(t, err) | |
require.NotEmpty(t, out) | |
assert.Error(t, err, "empty params") | |
}) | |
t.Run("should summarize", func(t *testing.T) { | |
sumClient := &fakeSUMClient{} | |
summaryProvider := New(sumClient) | |
in := []search.Result{ | |
{ | |
ID: "some-uuid", | |
Schema: map[string]interface{}{ | |
"content": "this is the content", | |
}, | |
}, | |
} | |
fakeParams := &Params{Properties: []string{"content"}} | |
limit := 1 | |
argumentModuleParams := map[string]interface{}{} | |
// when | |
out, err := summaryProvider.AdditionalPropertyFn(context.Background(), in, fakeParams, &limit, argumentModuleParams, nil) | |
// then | |
require.Nil(t, err) | |
require.NotEmpty(t, out) | |
assert.Equal(t, 1, len(in)) | |
answer, answerOK := in[0].AdditionalProperties["summary"] | |
assert.True(t, answerOK) | |
assert.NotNil(t, answer) | |
answerAdditional, answerAdditionalOK := answer.([]ent.SummaryResult) | |
assert.True(t, answerAdditionalOK) | |
assert.Equal(t, "this is the summary", answerAdditional[0].Result) | |
assert.Equal(t, "content", answerAdditional[0].Property) | |
}) | |
} | |
type fakeSUMClient struct{} | |
func (c *fakeSUMClient) GetSummary(ctx context.Context, property, text string, | |
) ([]ent.SummaryResult, error) { | |
return c.getSummary(property), nil | |
} | |
func (c *fakeSUMClient) getSummary(property string) []ent.SummaryResult { | |
return []ent.SummaryResult{{ | |
Property: property, | |
Result: "this is the summary", | |
}} | |
} | |