@@ -433,6 +433,121 @@ class FeatureDevControllerTest : FeatureDevTestBase() {
433
433
}
434
434
}
435
435
436
+ @Test
437
+ fun `test handleChat onCodeGeneration sends correct add code messages` () = runTest {
438
+ val totalIterations = 10
439
+
440
+ for (remainingIterations in 0 until totalIterations) {
441
+ val message = if (remainingIterations > 2 ) {
442
+ message(" amazonqFeatureDev.code_generation.iteration_counts_ask_to_add_code_or_feedback" )
443
+ } else if (remainingIterations > 0 ) {
444
+ message(
445
+ " amazonqFeatureDev.code_generation.iteration_counts" ,
446
+ remainingIterations,
447
+ totalIterations,
448
+ )
449
+ } else {
450
+ message(
451
+ " amazonqFeatureDev.code_generation.iteration_counts_ask_to_add_code" ,
452
+ remainingIterations,
453
+ totalIterations,
454
+ )
455
+ }
456
+ val mockSession = mock<Session >()
457
+ val featureDevService = mockk<FeatureDevService >()
458
+ val repoContext = mock<FeatureDevSessionContext >()
459
+ val sessionStateConfig = SessionStateConfig (testConversationId, repoContext, featureDevService)
460
+ val mockInteraction = mock<Interaction >()
461
+ whenever(mockSession.send(userMessage)).thenReturn(mockInteraction)
462
+ whenever(mockSession.sessionState).thenReturn(
463
+ PrepareCodeGenerationState (
464
+ testTabId,
465
+ CancellationTokenSource (),
466
+ " test-command" ,
467
+ sessionStateConfig,
468
+ newFileContents,
469
+ deletedFiles,
470
+ testReferences,
471
+ testUploadId,
472
+ 1 ,
473
+ messenger,
474
+ remainingIterations,
475
+ totalIterations,
476
+ diffMetricsProcessed = DiffMetricsProcessed (HashSet (), HashSet ()),
477
+ ),
478
+ )
479
+
480
+ controller.onCodeGeneration(mockSession, userMessage, testTabId)
481
+
482
+ coVerify {
483
+ messenger.sendAnswer(
484
+ tabId = testTabId,
485
+ messageType = FeatureDevMessageType .Answer ,
486
+ message = message
487
+ )
488
+ }
489
+ }
490
+ }
491
+
492
+ @Test
493
+ fun `test handleChat onCodeGeneration sends correct messages after cancellation` () = runTest {
494
+ val totalIterations = 10
495
+
496
+ for (remainingIterations in - 1 until totalIterations) {
497
+ // remainingIterations < 0 is to represent the null case
498
+ val message = if (remainingIterations > 2 || remainingIterations < 0 ) {
499
+ message(" amazonqFeatureDev.code_generation.stopped_code_generation_no_iteration_count_display" )
500
+ } else if (remainingIterations > 0 ) {
501
+ message(
502
+ " amazonqFeatureDev.code_generation.stopped_code_generation" ,
503
+ remainingIterations,
504
+ totalIterations,
505
+ )
506
+ } else {
507
+ message(
508
+ " amazonqFeatureDev.code_generation.stopped_code_generation_no_iterations" ,
509
+ remainingIterations,
510
+ totalIterations,
511
+ )
512
+ }
513
+ val mockSession = mock<Session >()
514
+ val featureDevService = mockk<FeatureDevService >()
515
+ val repoContext = mock<FeatureDevSessionContext >()
516
+ val sessionStateConfig = SessionStateConfig (testConversationId, repoContext, featureDevService)
517
+ val mockInteraction = mock<Interaction >()
518
+ val token = CancellationTokenSource ()
519
+ token.cancel()
520
+ whenever(mockSession.send(userMessage)).thenReturn(mockInteraction)
521
+ whenever(mockSession.sessionState).thenReturn(
522
+ PrepareCodeGenerationState (
523
+ testTabId,
524
+ token,
525
+ " test-command" ,
526
+ sessionStateConfig,
527
+ newFileContents,
528
+ deletedFiles,
529
+ testReferences,
530
+ testUploadId,
531
+ 1 ,
532
+ messenger,
533
+ (if (remainingIterations < 0 ) null else remainingIterations),
534
+ totalIterations,
535
+ diffMetricsProcessed = DiffMetricsProcessed (HashSet (), HashSet ()),
536
+ ),
537
+ )
538
+
539
+ controller.onCodeGeneration(mockSession, userMessage, testTabId)
540
+
541
+ coVerify {
542
+ messenger.sendAnswer(
543
+ tabId = testTabId,
544
+ messageType = FeatureDevMessageType .Answer ,
545
+ message = message
546
+ )
547
+ }
548
+ }
549
+ }
550
+
436
551
@Test
437
552
fun `test handleChat onCodeGeneration sends success metrics` () = runTest {
438
553
val mockSession = mock<Session >()
0 commit comments