@@ -297,6 +297,100 @@ public async Task InitializeParametersAsync_WithEmptyParameterList_CompletesSucc
297297 await parameterProcessor . InitializeParametersAsync ( [ ] ) ;
298298 }
299299
300+ [ Fact ]
301+ public async Task InitializeParametersAsync_WithMissingParameterValue_LogsWarningWithoutException ( )
302+ {
303+ // Arrange
304+ var loggerService = ConsoleLoggingTestHelpers . GetResourceLoggerService ( ) ;
305+ var interactionService = CreateInteractionService ( ) ;
306+ var parameterProcessor = CreateParameterProcessor (
307+ loggerService : loggerService ,
308+ interactionService : interactionService ) ;
309+ var parameterWithMissingValue = CreateParameterWithMissingValue ( "missingParam" ) ;
310+
311+ // Set up log watching
312+ var logsTask = ConsoleLoggingTestHelpers . WatchForLogsAsync ( loggerService , 1 , parameterWithMissingValue ) ;
313+
314+ // Act
315+ await parameterProcessor . InitializeParametersAsync ( [ parameterWithMissingValue ] ) ;
316+
317+ // Wait for logs to be written
318+ var logs = await logsTask . WaitAsync ( TimeSpan . FromSeconds ( 5 ) ) ;
319+
320+ // Assert - Should log warning without exception details
321+ Assert . Single ( logs ) ;
322+ var logEntry = logs [ 0 ] ;
323+ Assert . Contains ( "Parameter resource missingParam could not be initialized. Waiting for user input." , logEntry . Content ) ;
324+ Assert . False ( logEntry . IsErrorMessage ) ;
325+ }
326+
327+ [ Fact ]
328+ public async Task InitializeParametersAsync_WithNonMissingParameterException_LogsErrorWithException ( )
329+ {
330+ // Arrange
331+ var loggerService = ConsoleLoggingTestHelpers . GetResourceLoggerService ( ) ;
332+ var parameterProcessor = CreateParameterProcessor ( loggerService : loggerService ) ;
333+ var parameterWithError = CreateParameterWithGenericError ( "errorParam" ) ;
334+
335+ // Set up log watching
336+ var logsTask = ConsoleLoggingTestHelpers . WatchForLogsAsync ( loggerService , 1 , parameterWithError ) ;
337+
338+ // Act
339+ await parameterProcessor . InitializeParametersAsync ( [ parameterWithError ] ) ;
340+
341+ // Wait for logs to be written
342+ var logs = await logsTask . WaitAsync ( TimeSpan . FromSeconds ( 5 ) ) ;
343+
344+ // Assert - Should log error message
345+ Assert . Single ( logs ) ;
346+ var logEntry = logs [ 0 ] ;
347+ Assert . Contains ( "Failed to initialize parameter resource errorParam." , logEntry . Content ) ;
348+ Assert . True ( logEntry . IsErrorMessage ) ;
349+ }
350+
351+ [ Fact ]
352+ public async Task HandleUnresolvedParametersAsync_WithResolvedParameter_LogsResolutionViaInteraction ( )
353+ {
354+ // Arrange
355+ var loggerService = ConsoleLoggingTestHelpers . GetResourceLoggerService ( ) ;
356+ var testInteractionService = new TestInteractionService ( ) ;
357+ var notificationService = ResourceNotificationServiceTestHelpers . Create ( ) ;
358+ var parameterProcessor = CreateParameterProcessor (
359+ notificationService : notificationService ,
360+ loggerService : loggerService ,
361+ interactionService : testInteractionService ) ;
362+ var parameter = CreateParameterWithMissingValue ( "testParam" ) ;
363+
364+ parameter . WaitForValueTcs = new TaskCompletionSource < string > ( TaskCreationOptions . RunContinuationsAsynchronously ) ;
365+
366+ // Set up log watching
367+ var logsTask = ConsoleLoggingTestHelpers . WatchForLogsAsync ( loggerService , 1 , parameter ) ;
368+
369+ // Act - Start handling unresolved parameters
370+ var handleTask = parameterProcessor . HandleUnresolvedParametersAsync ( [ parameter ] ) ;
371+
372+ // Wait for the message bar interaction
373+ var messageBarInteraction = await testInteractionService . Interactions . Reader . ReadAsync ( ) ;
374+ messageBarInteraction . CompletionTcs . SetResult ( InteractionResultFactory . Ok ( true ) ) ;
375+
376+ // Wait for the inputs interaction
377+ var inputsInteraction = await testInteractionService . Interactions . Reader . ReadAsync ( ) ;
378+ inputsInteraction . Inputs [ 0 ] . SetValue ( "testValue" ) ;
379+ inputsInteraction . CompletionTcs . SetResult ( InteractionResultFactory . Ok ( inputsInteraction . Inputs ) ) ;
380+
381+ // Wait for the handle task to complete
382+ await handleTask ;
383+
384+ // Wait for logs to be written
385+ var logs = await logsTask . WaitAsync ( TimeSpan . FromSeconds ( 5 ) ) ;
386+
387+ // Assert - Should log that parameter was resolved via user interaction
388+ Assert . Single ( logs ) ;
389+ var logEntry = logs [ 0 ] ;
390+ Assert . Contains ( "Parameter resource testParam has been resolved via user interaction." , logEntry . Content ) ;
391+ Assert . False ( logEntry . IsErrorMessage ) ;
392+ }
393+
300394 private static ParameterProcessor CreateParameterProcessor (
301395 ResourceNotificationService ? notificationService = null ,
302396 ResourceLoggerService ? loggerService = null ,
0 commit comments