Spaces:
Running
Running
// _ _ | |
// __ _____ __ ___ ___ __ _| |_ ___ | |
// \ \ /\ / / _ \/ _` \ \ / / |/ _` | __/ _ \ | |
// \ V V / __/ (_| |\ V /| | (_| | || __/ | |
// \_/\_/ \___|\__,_| \_/ |_|\__,_|\__\___| | |
// | |
// Copyright © 2016 - 2024 Weaviate B.V. All rights reserved. | |
// | |
// CONTACT: [email protected] | |
// | |
package test | |
import ( | |
"testing" | |
graphqlhelper "github.com/weaviate/weaviate/test/helper/graphql" | |
"github.com/stretchr/testify/assert" | |
"github.com/weaviate/weaviate/entities/models" | |
"github.com/weaviate/weaviate/entities/schema" | |
"github.com/weaviate/weaviate/test/helper" | |
) | |
func getsWithExpectedFailures(t *testing.T) { | |
t.Run("get with certainty on l2-squared distancer", func(t *testing.T) { | |
className := "L2DistanceClass" | |
defer deleteObjectClass(t, className) | |
t.Run("create class configured with distance type l2-squared", func(t *testing.T) { | |
createObjectClass(t, &models.Class{ | |
Class: className, | |
ModuleConfig: map[string]interface{}{ | |
"text2vec-contextionary": map[string]interface{}{ | |
"vectorizeClassName": true, | |
}, | |
}, | |
VectorIndexConfig: map[string]interface{}{ | |
"distance": "l2-squared", | |
}, | |
Properties: []*models.Property{ | |
{ | |
Name: "name", | |
DataType: schema.DataTypeText.PropString(), | |
Tokenization: models.PropertyTokenizationWhitespace, | |
}, | |
}, | |
}) | |
}) | |
t.Run("assert failure to get", func(t *testing.T) { | |
query := ` | |
{ | |
Get { | |
L2DistanceClass(nearVector: {vector:[1,1,1], certainty: 0.8}) { | |
name | |
} | |
} | |
}` | |
result := graphqlhelper.ErrorGraphQL(t, helper.RootAuth, query) | |
assert.Len(t, result, 1) | |
errMsg := result[0].Message | |
assert.Equal(t, "can't compute and return certainty when vector index is configured with l2-squared distance", errMsg) | |
}) | |
}) | |
t.Run("get with certainty on dot distancer", func(t *testing.T) { | |
className := "DotDistanceClass" | |
defer deleteObjectClass(t, className) | |
t.Run("create class configured with distance type dot", func(t *testing.T) { | |
createObjectClass(t, &models.Class{ | |
Class: className, | |
ModuleConfig: map[string]interface{}{ | |
"text2vec-contextionary": map[string]interface{}{ | |
"vectorizeClassName": true, | |
}, | |
}, | |
VectorIndexConfig: map[string]interface{}{ | |
"distance": "dot", | |
}, | |
Properties: []*models.Property{ | |
{ | |
Name: "name", | |
DataType: schema.DataTypeText.PropString(), | |
Tokenization: models.PropertyTokenizationWhitespace, | |
}, | |
}, | |
}) | |
}) | |
t.Run("assert failure to get", func(t *testing.T) { | |
query := ` | |
{ | |
Get { | |
DotDistanceClass(nearVector: {vector:[1,1,1], certainty: 0.8}) { | |
name | |
} | |
} | |
}` | |
result := graphqlhelper.ErrorGraphQL(t, helper.RootAuth, query) | |
assert.Len(t, result, 1) | |
errMsg := result[0].Message | |
assert.Equal(t, "can't compute and return certainty when vector index is configured with dot distance", errMsg) | |
}) | |
}) | |
} | |