33# SPDX-License-Identifier: Apache-2.0
44
55from haystack .dataclasses .answer import Answer , ExtractedAnswer , GeneratedAnswer
6- from haystack .dataclasses . document import Document
6+ from haystack .dataclasses import Document , ChatMessage
77
88
99class TestExtractedAnswer :
@@ -133,25 +133,85 @@ def test_protocol(self):
133133 assert isinstance (answer , Answer )
134134
135135 def test_to_dict (self ):
136+ answer = GeneratedAnswer (data = "42" , query = "What is the answer?" , documents = [])
137+ assert answer .to_dict () == {
138+ "type" : "haystack.dataclasses.answer.GeneratedAnswer" ,
139+ "init_parameters" : {"data" : "42" , "query" : "What is the answer?" , "documents" : [], "meta" : {}},
140+ }
141+
142+ def test_to_dict_with_meta (self ):
143+ answer = GeneratedAnswer (
144+ data = "42" ,
145+ query = "What is the answer?" ,
146+ documents = [],
147+ meta = {"meta_key" : "meta_value" , "all_messages" : ["What is the answer?" ]},
148+ )
149+ assert answer .to_dict () == {
150+ "type" : "haystack.dataclasses.answer.GeneratedAnswer" ,
151+ "init_parameters" : {
152+ "data" : "42" ,
153+ "query" : "What is the answer?" ,
154+ "documents" : [],
155+ "meta" : {"meta_key" : "meta_value" , "all_messages" : ["What is the answer?" ]},
156+ },
157+ }
158+
159+ def test_to_dict_with_chat_message_in_meta (self ):
136160 documents = [
137161 Document (id = "1" , content = "The answer is 42." ),
138162 Document (id = "2" , content = "I believe the answer is 42." ),
139163 Document (id = "3" , content = "42 is definitely the answer." ),
140164 ]
141165 answer = GeneratedAnswer (
142- data = "42" , query = "What is the answer?" , documents = documents , meta = {"meta_key" : "meta_value" }
166+ data = "42" ,
167+ query = "What is the answer?" ,
168+ documents = documents ,
169+ meta = {"meta_key" : "meta_value" , "all_messages" : [ChatMessage .from_user ("What is the answer?" )]},
143170 )
144171 assert answer .to_dict () == {
145172 "type" : "haystack.dataclasses.answer.GeneratedAnswer" ,
146173 "init_parameters" : {
147174 "data" : "42" ,
148175 "query" : "What is the answer?" ,
149176 "documents" : [d .to_dict (flatten = False ) for d in documents ],
150- "meta" : {"meta_key" : "meta_value" },
177+ "meta" : {
178+ "meta_key" : "meta_value" ,
179+ "all_messages" : [ChatMessage .from_user ("What is the answer?" ).to_dict ()],
180+ },
151181 },
152182 }
153183
154184 def test_from_dict (self ):
185+ answer = GeneratedAnswer .from_dict (
186+ {
187+ "type" : "haystack.dataclasses.answer.GeneratedAnswer" ,
188+ "init_parameters" : {"data" : "42" , "query" : "What is the answer?" , "documents" : [], "meta" : {}},
189+ }
190+ )
191+ assert answer .data == "42"
192+ assert answer .query == "What is the answer?"
193+ assert answer .documents == []
194+ assert answer .meta == {}
195+
196+ def test_from_dict_with_meta (self ):
197+ answer = GeneratedAnswer .from_dict (
198+ {
199+ "type" : "haystack.dataclasses.answer.GeneratedAnswer" ,
200+ "init_parameters" : {
201+ "data" : "42" ,
202+ "query" : "What is the answer?" ,
203+ "documents" : [],
204+ "meta" : {"meta_key" : "meta_value" , "all_messages" : ["What is the answer?" ]},
205+ },
206+ }
207+ )
208+ assert answer .data == "42"
209+ assert answer .query == "What is the answer?"
210+ assert answer .documents == []
211+ assert answer .meta ["meta_key" ] == "meta_value"
212+ assert answer .meta ["all_messages" ] == ["What is the answer?" ]
213+
214+ def test_from_dict_with_chat_message_in_meta (self ):
155215 answer = GeneratedAnswer .from_dict (
156216 {
157217 "type" : "haystack.dataclasses.answer.GeneratedAnswer" ,
@@ -163,7 +223,10 @@ def test_from_dict(self):
163223 {"id" : "2" , "content" : "I believe the answer is 42." },
164224 {"id" : "3" , "content" : "42 is definitely the answer." },
165225 ],
166- "meta" : {"meta_key" : "meta_value" },
226+ "meta" : {
227+ "meta_key" : "meta_value" ,
228+ "all_messages" : [ChatMessage .from_user ("What is the answer?" ).to_dict ()],
229+ },
167230 },
168231 }
169232 )
@@ -174,4 +237,5 @@ def test_from_dict(self):
174237 Document (id = "2" , content = "I believe the answer is 42." ),
175238 Document (id = "3" , content = "42 is definitely the answer." ),
176239 ]
177- assert answer .meta == {"meta_key" : "meta_value" }
240+ assert answer .meta ["meta_key" ] == "meta_value"
241+ assert answer .meta ["all_messages" ] == [ChatMessage .from_user ("What is the answer?" )]
0 commit comments