github.com/weaviate/weaviate@v1.24.6/modules/multi2vec-bind/clients/vectorizer_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 clients 13 14 import ( 15 "context" 16 "encoding/json" 17 "net/http" 18 "net/http/httptest" 19 "testing" 20 21 "github.com/stretchr/testify/assert" 22 "github.com/stretchr/testify/require" 23 "github.com/weaviate/weaviate/modules/multi2vec-clip/ent" 24 ) 25 26 func TestVectorize(t *testing.T) { 27 t.Run("when the response is successful", func(t *testing.T) { 28 server := httptest.NewServer(&testVectorizeHandler{ 29 t: t, 30 res: vecResponse{ 31 TextVectors: [][]float32{ 32 {0, 1, 2}, 33 }, 34 ImageVectors: [][]float32{ 35 {1, 2, 3}, 36 }, 37 }, 38 }) 39 defer server.Close() 40 c := New(server.URL, 0, nullLogger()) 41 res, err := c.Vectorize(context.Background(), []string{"hello"}, 42 []string{"image-encoding"}, nil, nil, nil, nil, nil) 43 44 assert.Nil(t, err) 45 require.NotNil(t, res) 46 resp := &ent.VectorizationResult{ 47 TextVectors: [][]float32{ 48 {0, 1, 2}, 49 }, 50 ImageVectors: [][]float32{ 51 {1, 2, 3}, 52 }, 53 } 54 assert.Equal(t, res.TextVectors, resp.TextVectors) 55 assert.Equal(t, res.ImageVectors, resp.ImageVectors) 56 assert.Equal(t, res.VideoVectors, resp.VideoVectors) 57 assert.Equal(t, res.AudioVectors, resp.AudioVectors) 58 assert.Equal(t, res.ThermalVectors, resp.ThermalVectors) 59 assert.Equal(t, res.DepthVectors, resp.DepthVectors) 60 assert.Equal(t, res.IMUVectors, resp.IMUVectors) 61 }) 62 63 t.Run("when the server has a an error", func(t *testing.T) { 64 server := httptest.NewServer(&testVectorizeHandler{ 65 t: t, 66 res: vecResponse{ 67 Error: "some error from the server", 68 }, 69 }) 70 defer server.Close() 71 c := New(server.URL, 0, nullLogger()) 72 _, err := c.Vectorize(context.Background(), []string{"hello"}, 73 []string{"image-encoding"}, []string{}, []string{}, []string{}, []string{}, []string{}) 74 75 require.NotNil(t, err) 76 assert.Contains(t, err.Error(), "some error from the server") 77 }) 78 } 79 80 type testVectorizeHandler struct { 81 t *testing.T 82 // the test handler will report as not ready before the time has passed 83 res vecResponse 84 } 85 86 func (f *testVectorizeHandler) ServeHTTP(w http.ResponseWriter, r *http.Request) { 87 assert.Equal(f.t, "/vectorize", r.URL.String()) 88 assert.Equal(f.t, http.MethodPost, r.Method) 89 90 if f.res.Error != "" { 91 w.WriteHeader(500) 92 } 93 jsonBytes, _ := json.Marshal(f.res) 94 w.Write(jsonBytes) 95 }