SemanticSearchPOC / usecases /traverser /traverser_get_params_test.go
KevinStephenson
Adding in weaviate code
b110593
raw
history blame
3.37 kB
// _ _
// __ _____ __ ___ ___ __ _| |_ ___
// \ \ /\ / / _ \/ _` \ \ / / |/ _` | __/ _ \
// \ V V / __/ (_| |\ V /| | (_| | || __/
// \_/\_/ \___|\__,_| \_/ |_|\__,_|\__\___|
//
// Copyright © 2016 - 2024 Weaviate B.V. All rights reserved.
//
// CONTACT: [email protected]
//
package traverser
import (
"testing"
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require"
"github.com/weaviate/weaviate/entities/search"
)
func TestGetParams(t *testing.T) {
t.Run("without any select properties", func(t *testing.T) {
sp := search.SelectProperties{}
assert.Equal(t, false, sp.HasRefs(), "indicates no refs are present")
})
t.Run("with only primitive select properties", func(t *testing.T) {
sp := search.SelectProperties{
search.SelectProperty{
IsPrimitive: true,
Name: "Foo",
},
search.SelectProperty{
IsPrimitive: true,
Name: "Bar",
},
}
assert.Equal(t, false, sp.HasRefs(), "indicates no refs are present")
resolve, err := sp.ShouldResolve([]string{"inCountry", "Country"})
require.Nil(t, err)
assert.Equal(t, false, resolve)
})
t.Run("with a ref prop", func(t *testing.T) {
sp := search.SelectProperties{
search.SelectProperty{
IsPrimitive: true,
Name: "name",
},
search.SelectProperty{
IsPrimitive: false,
Name: "inCity",
Refs: []search.SelectClass{
{
ClassName: "City",
RefProperties: search.SelectProperties{
search.SelectProperty{
Name: "name",
IsPrimitive: true,
},
search.SelectProperty{
Name: "inCountry",
IsPrimitive: false,
Refs: []search.SelectClass{
{
ClassName: "Country",
RefProperties: search.SelectProperties{
search.SelectProperty{
Name: "name",
IsPrimitive: true,
},
},
},
},
},
},
},
},
},
}
t.Run("checking for refs", func(t *testing.T) {
assert.Equal(t, true, sp.HasRefs(), "indicates refs are present")
})
t.Run("checking valid single level ref", func(t *testing.T) {
resolve, err := sp.ShouldResolve([]string{"inCity", "City"})
require.Nil(t, err)
assert.Equal(t, true, resolve)
})
t.Run("checking invalid single level ref", func(t *testing.T) {
resolve, err := sp.ShouldResolve([]string{"inCity", "Town"})
require.Nil(t, err)
assert.Equal(t, false, resolve)
})
t.Run("checking valid nested ref", func(t *testing.T) {
resolve, err := sp.ShouldResolve([]string{"inCity", "City", "inCountry", "Country"})
require.Nil(t, err)
assert.Equal(t, true, resolve)
})
t.Run("checking invalid nested level refs", func(t *testing.T) {
resolve, err := sp.ShouldResolve([]string{"inCity", "Town", "inCountry", "Country"})
require.Nil(t, err)
assert.Equal(t, false, resolve)
resolve, err = sp.ShouldResolve([]string{"inCity", "City", "inCountry", "Land"})
require.Nil(t, err)
assert.Equal(t, false, resolve)
})
t.Run("selecting a specific prop", func(t *testing.T) {
prop := sp.FindProperty("inCity")
assert.Equal(t, prop, &sp[1])
})
})
}