github.com/weaviate/weaviate@v1.24.6/test/modules/qna-transformers/qna_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 test 13 14 import ( 15 "encoding/json" 16 "fmt" 17 "os" 18 "testing" 19 20 "github.com/stretchr/testify/assert" 21 "github.com/weaviate/weaviate/entities/models" 22 "github.com/weaviate/weaviate/test/helper" 23 graphqlhelper "github.com/weaviate/weaviate/test/helper/graphql" 24 "github.com/weaviate/weaviate/test/helper/sample-schema/books" 25 ) 26 27 func Test_QnATransformers(t *testing.T) { 28 helper.SetupClient(os.Getenv(weaviateEndpoint)) 29 // Contextionary with QnA module config present 30 booksClass := books.ClassContextionaryVectorizerWithQnATransformers() 31 helper.CreateClass(t, booksClass) 32 defer helper.DeleteClass(t, booksClass.Class) 33 // Contextionary without QnA module config present 34 booksWithoutQnAConfig := "BooksWithoutConfig" 35 booksWithoutQnAConfigClass := books.ClassContextionaryVectorizerWithName(booksWithoutQnAConfig) 36 helper.CreateClass(t, booksWithoutQnAConfigClass) 37 defer helper.DeleteClass(t, booksWithoutQnAConfigClass.Class) 38 // Text2VecTransformers with QnA module config present 39 booksTransformers := "BooksTransformers" 40 booksTransformersClass := books.ClassTransformersVectorizerWithQnATransformersWithName(booksTransformers) 41 helper.CreateClass(t, booksTransformersClass) 42 defer helper.DeleteClass(t, booksTransformersClass.Class) 43 // Text2VecTransformers without QnA module config present 44 booksTransformersWithoutQnAConfig := "BooksTransformersWithoutConfig" 45 booksTransformersWithoutQnAConfigClass := books.ClassTransformersVectorizerWithName(booksTransformersWithoutQnAConfig) 46 helper.CreateClass(t, booksTransformersWithoutQnAConfigClass) 47 defer helper.DeleteClass(t, booksTransformersWithoutQnAConfigClass.Class) 48 49 t.Run("add data to Books schema", func(t *testing.T) { 50 bookObjects := []*models.Object{} 51 bookObjects = append(bookObjects, books.Objects()...) 52 bookObjects = append(bookObjects, books.ObjectsWithName(booksWithoutQnAConfig)...) 53 bookObjects = append(bookObjects, books.ObjectsWithName(booksTransformers)...) 54 bookObjects = append(bookObjects, books.ObjectsWithName(booksTransformersWithoutQnAConfig)...) 55 for _, book := range bookObjects { 56 helper.CreateObject(t, book) 57 helper.AssertGetObjectEventually(t, book.Class, book.ID) 58 } 59 }) 60 61 t.Run("ask", func(t *testing.T) { 62 for _, class := range []*models.Class{booksClass, booksWithoutQnAConfigClass, booksTransformersClass, booksTransformersWithoutQnAConfigClass} { 63 t.Run(class.Class, func(t *testing.T) { 64 query := ` 65 { 66 Get { 67 %s( 68 ask: { 69 question: "Who is Dune's author?" 70 } 71 limit: 1 72 ){ 73 title 74 _additional { 75 answer { 76 hasAnswer 77 property 78 result 79 startPosition 80 endPosition 81 } 82 } 83 } 84 } 85 } 86 ` 87 result := graphqlhelper.AssertGraphQL(t, helper.RootAuth, fmt.Sprintf(query, class.Class)) 88 books := result.Get("Get", class.Class).AsSlice() 89 expected := []interface{}{ 90 map[string]interface{}{ 91 "title": "Dune", 92 "_additional": map[string]interface{}{ 93 "answer": map[string]interface{}{ 94 "endPosition": json.Number("74"), 95 "hasAnswer": true, 96 "property": "description", 97 "result": "frank herbert", 98 "startPosition": json.Number("61"), 99 }, 100 }, 101 }, 102 } 103 assert.ElementsMatch(t, expected, books) 104 }) 105 } 106 }) 107 }