@@ -108,6 +108,65 @@ describe('hydrateUserFilesWithBase64', () => {
108108 expect ( hydrated . file . base64 ) . toBe ( base64 )
109109 } )
110110
111+ it ( 'uses rendered size when generated source metadata exceeds the inline limit' , async ( ) => {
112+ const rendered = Buffer . from ( '%PDF' )
113+ mockDownloadServableFileFromStorage . mockResolvedValueOnce ( {
114+ buffer : rendered ,
115+ contentType : 'application/pdf' ,
116+ } )
117+ const file : UserFile = {
118+ id : 'file-1' ,
119+ name : 'report.pdf' ,
120+ key : 'workspace/2f1d8c3e-5b6a-4c7d-8e9f-0a1b2c3d4e5f/report.pdf' ,
121+ url : '' ,
122+ size : 11 ,
123+ type : 'text/x-python-pdf' ,
124+ }
125+
126+ const hydrated = await hydrateUserFilesWithBase64 ( { file } , { maxBytes : 10 , userId : 'user-1' } )
127+
128+ expect ( hydrated . file . base64 ) . toBe ( rendered . toString ( 'base64' ) )
129+ expect ( hydrated . file . size ) . toBe ( rendered . length )
130+ } )
131+
132+ it ( 'records rendered size when a generated document must use a provider upload path' , async ( ) => {
133+ mockDownloadServableFileFromStorage . mockResolvedValueOnce ( {
134+ buffer : Buffer . alloc ( 11 ) ,
135+ contentType : 'application/pdf' ,
136+ } )
137+ const file : UserFile = {
138+ id : 'file-1' ,
139+ name : 'report.pdf' ,
140+ key : 'workspace/2f1d8c3e-5b6a-4c7d-8e9f-0a1b2c3d4e5f/report.pdf' ,
141+ url : '' ,
142+ size : 1 ,
143+ type : 'text/x-python-pdf' ,
144+ }
145+
146+ const hydrated = await hydrateUserFilesWithBase64 ( { file } , { maxBytes : 10 , userId : 'user-1' } )
147+
148+ expect ( hydrated . file ) . not . toHaveProperty ( 'base64' )
149+ expect ( hydrated . file . size ) . toBe ( 11 )
150+ } )
151+
152+ it ( 'propagates generated documents that are still compiling' , async ( ) => {
153+ const notReady = new Error ( 'Document is still being generated' )
154+ notReady . name = 'DocCompileUserError'
155+ mockDownloadServableFileFromStorage . mockRejectedValueOnce ( notReady )
156+ const file : UserFile = {
157+ id : 'file-1' ,
158+ name : 'report.pdf' ,
159+ key : 'workspace/2f1d8c3e-5b6a-4c7d-8e9f-0a1b2c3d4e5f/report.pdf' ,
160+ url : '' ,
161+ size : 1 ,
162+ type : 'text/x-python-pdf' ,
163+ }
164+
165+ await expect (
166+ hydrateUserFilesWithBase64 ( { file } , { maxBytes : 10 , userId : 'user-1' } )
167+ ) . rejects . toBe ( notReady )
168+ } )
169+
111170 it ( 'does not hydrate URL-only internal file objects' , async ( ) => {
112171 const file : UserFile = {
113172 id : 'file-1' ,
0 commit comments