@@ -53,11 +53,11 @@ def test_falls_back_to_first_page_text_if_metadata_title_does_not_match_regex(se
5353 expected_title = "Advances in Mood Disorder Pharmacotherapy: Evaluating New Antipsychotics and Mood Stabilizers for Bipolar Disorder and Schizophrenia"
5454 self .assertEqual (expected_title , title .generate_title (doc ))
5555
56- @patch ("api.services.openai_services .openAIServices.openAI" )
56+ @patch ("api.views.uploadFile.title .openAIServices.openAI" )
5757 def test_falls_back_to_chatgpt_if_no_title_found (self , mock_openAI ):
5858 doc = MagicMock ()
5959 doc .metadata = {"title" : None }
60- doc .get_text .return_value = []
60+ doc [ 0 ] .get_text .return_value = []
6161
6262 mock_response = MagicMock ()
6363 mock_response .choices = [MagicMock ()]
@@ -67,3 +67,34 @@ def test_falls_back_to_chatgpt_if_no_title_found(self, mock_openAI):
6767 title .generate_title (doc )
6868
6969 self .assertTrue (mock_openAI .called )
70+
71+ @patch ("api.views.uploadFile.title.openAIServices.openAI" )
72+ def test_strips_quotes_from_openai_title (self , mock_openAI ):
73+ doc = MagicMock ()
74+ doc .metadata = {"title" : None }
75+ doc [0 ].get_text .return_value = []
76+
77+ mock_response = MagicMock ()
78+ mock_response .choices = [MagicMock ()]
79+ mock_response .choices [0 ].message .content = '"Updated CANMAT/ISBD Guidelines for Treating Mixed Features in Bipolar Disorder"'
80+ mock_openAI .return_value = mock_response
81+
82+ result = title .generate_title (doc )
83+
84+ self .assertEqual (result , "Updated CANMAT/ISBD Guidelines for Treating Mixed Features in Bipolar Disorder" )
85+
86+ @patch ("api.views.uploadFile.title.openAIServices.openAI" )
87+ def test_truncates_long_openai_title (self , mock_openAI ):
88+ doc = MagicMock ()
89+ doc .metadata = {"title" : None }
90+ doc [0 ].get_text .return_value = []
91+
92+ mock_response = MagicMock ()
93+ mock_response .choices = [MagicMock ()]
94+ mock_response .choices [0 ].message .content = "A" * 300
95+ mock_openAI .return_value = mock_response
96+
97+ result = title .generate_title (doc )
98+
99+ # Ensure the title is truncated to fit the UploadFile model's title field (max_length=255), since OpenAI responses may exceed this limit
100+ self .assertLessEqual (len (result ), 255 )
0 commit comments