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  }