github.com/weaviate/weaviate@v1.24.6/modules/sum-transformers/client/sum_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 client 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/sum-transformers/ent" 24 ) 25 26 func TestGetAnswer(t *testing.T) { 27 t.Run("when the server has a successful answer", func(t *testing.T) { 28 server := httptest.NewServer(&testSUMHandler{ 29 t: t, 30 res: sumResponse{ 31 sumInput: sumInput{ 32 Text: "I work at Apple", 33 }, 34 Summary: []summaryResponse{ 35 { 36 Result: "Apple", 37 }, 38 }, 39 }, 40 }) 41 defer server.Close() 42 c := New(server.URL, 0, nullLogger()) 43 res, err := c.GetSummary(context.Background(), "prop", 44 "I work at Apple") 45 46 assert.Nil(t, err) 47 assert.Equal(t, []ent.SummaryResult{ 48 { 49 Result: "Apple", 50 Property: "prop", 51 }, 52 }, res) 53 }) 54 55 t.Run("when the server has a an error", func(t *testing.T) { 56 server := httptest.NewServer(&testSUMHandler{ 57 t: t, 58 res: sumResponse{ 59 Error: "some error from the server", 60 }, 61 }) 62 defer server.Close() 63 c := New(server.URL, 0, nullLogger()) 64 _, err := c.GetSummary(context.Background(), "prop", 65 "I work at Apple") 66 67 require.NotNil(t, err) 68 assert.Contains(t, err.Error(), "some error from the server") 69 }) 70 } 71 72 type testSUMHandler struct { 73 t *testing.T 74 // the test handler will report as not ready before the time has passed 75 res sumResponse 76 } 77 78 func (f *testSUMHandler) ServeHTTP(w http.ResponseWriter, r *http.Request) { 79 assert.Equal(f.t, "/sum/", r.URL.String()) 80 assert.Equal(f.t, http.MethodPost, r.Method) 81 82 if f.res.Error != "" { 83 w.WriteHeader(500) 84 } 85 86 jsonBytes, _ := json.Marshal(f.res) 87 w.Write(jsonBytes) 88 }