github.com/weaviate/weaviate@v1.24.6/usecases/traverser/traverser_schema_search_params_test.go (about) 1 // _ _ 2 // __ _____ __ ___ ___ __ _| |_ ___ 3 // \ \ /\ / / _ \/ _` \ \ / / |/ _` | __/ _ \ 4 // \ V V / __/ (_| |\ V /| | (_| | || __/ 5 // \_/\_/ \___|\__,_| \_/ |_|\__,_|\__\___| 6 // 7 // Copyright © 2016 - 2024 Weaviate B.V. All rights reserved. 8 // 9 // CONTACT: hello@weaviate.io 10 // 11 12 package traverser 13 14 import ( 15 "errors" 16 "testing" 17 18 "github.com/stretchr/testify/assert" 19 ) 20 21 type schemaSearchTest struct { 22 name string 23 searchParams SearchParams 24 expectedError error 25 } 26 27 type schemaSearchTests []schemaSearchTest 28 29 func Test__SchemaSearch_Validation(t *testing.T) { 30 tests := schemaSearchTests{ 31 { 32 name: "valid params", 33 searchParams: SearchParams{ 34 SearchType: SearchTypeClass, 35 Name: "foo", 36 Certainty: 1.0, 37 }, 38 expectedError: nil, 39 }, 40 { 41 name: "missing search name", 42 searchParams: SearchParams{ 43 SearchType: SearchTypeClass, 44 Name: "", 45 Certainty: 0.0, 46 }, 47 expectedError: errors.New("Name cannot be empty"), 48 }, 49 { 50 name: "certainty too low", 51 searchParams: SearchParams{ 52 SearchType: SearchTypeClass, 53 Name: "bestName", 54 Certainty: -4, 55 }, 56 expectedError: errors.New("invalid Certainty: must be between 0 and 1, but got '-4.000000'"), 57 }, 58 { 59 name: "certainty too high", 60 searchParams: SearchParams{ 61 SearchType: SearchTypeClass, 62 Name: "bestName", 63 Certainty: 4, 64 }, 65 expectedError: errors.New("invalid Certainty: must be between 0 and 1, but got '4.000000'"), 66 }, 67 { 68 name: "invalid search type", 69 searchParams: SearchParams{ 70 SearchType: SearchType("invalid"), 71 Name: "bestName", 72 Certainty: 0.5, 73 }, 74 expectedError: errors.New("SearchType must be SearchTypeClass or SearchTypeProperty, but got 'invalid'"), 75 }, 76 { 77 name: "missing kind on class search", 78 searchParams: SearchParams{ 79 SearchType: SearchTypeClass, 80 Name: "bestName", 81 Certainty: 0.5, 82 }, 83 expectedError: nil, 84 }, 85 { 86 name: "valid keywords", 87 searchParams: SearchParams{ 88 SearchType: SearchTypeClass, 89 Name: "foo", 90 Certainty: 1.0, 91 }, 92 expectedError: nil, 93 }, 94 } 95 96 tests.AssertValidation(t) 97 } 98 99 func (s schemaSearchTests) AssertValidation(t *testing.T) { 100 for _, test := range s { 101 t.Run(test.name, func(t *testing.T) { 102 err := test.searchParams.Validate() 103 104 // assert error 105 assert.Equal(t, test.expectedError, err, "should match the expected error") 106 }) 107 } 108 }