@@ -20,6 +20,7 @@ import {
20
20
import { CodeWhispererSession , SessionData , SessionManager } from './session/sessionManager'
21
21
import {
22
22
EMPTY_RESULT ,
23
+ EXPECTED_NEXT_TOKEN ,
23
24
EXPECTED_REFERENCE ,
24
25
EXPECTED_RESPONSE_CONTEXT ,
25
26
EXPECTED_RESULT ,
@@ -31,6 +32,7 @@ import {
31
32
HELLO_WORLD_IN_CSHARP ,
32
33
HELLO_WORLD_LINE ,
33
34
HELLO_WORLD_WITH_WINDOWS_ENDING ,
35
+ SAMPLE_SESSION_DATA ,
34
36
SINGLE_LINE_FILE_CUTOFF_INDEX ,
35
37
SOME_CLOSED_FILE ,
36
38
SOME_FILE ,
@@ -334,6 +336,7 @@ describe('CodeWhisperer Server', () => {
334
336
references : undefined ,
335
337
} ,
336
338
] ,
339
+ partialResultToken : undefined ,
337
340
}
338
341
339
342
const result = await features . doInlineCompletionWithReferences (
@@ -414,6 +417,7 @@ describe('CodeWhisperer Server', () => {
414
417
references : undefined ,
415
418
} ,
416
419
] ,
420
+ partialResultToken : undefined ,
417
421
}
418
422
419
423
const result = await features . doInlineCompletionWithReferences (
@@ -446,6 +450,7 @@ describe('CodeWhisperer Server', () => {
446
450
references : undefined ,
447
451
} ,
448
452
] ,
453
+ partialResultToken : undefined ,
449
454
}
450
455
451
456
const result = await features . doInlineCompletionWithReferences (
@@ -476,6 +481,57 @@ describe('CodeWhisperer Server', () => {
476
481
assert . deepEqual ( result , EMPTY_RESULT )
477
482
} )
478
483
484
+ // pagination
485
+ it ( 'returns next token from service' , async ( ) => {
486
+ service . generateSuggestions . returns (
487
+ Promise . resolve ( {
488
+ suggestions : EXPECTED_SUGGESTION ,
489
+ responseContext : {
490
+ ...EXPECTED_RESPONSE_CONTEXT ,
491
+ nextToken : EXPECTED_NEXT_TOKEN ,
492
+ } ,
493
+ } )
494
+ )
495
+
496
+ const result = await features . doInlineCompletionWithReferences (
497
+ {
498
+ textDocument : { uri : SOME_FILE . uri } ,
499
+ position : { line : 0 , character : 0 } ,
500
+ context : { triggerKind : InlineCompletionTriggerKind . Invoked } ,
501
+ } ,
502
+ CancellationToken . None
503
+ )
504
+
505
+ assert . deepEqual ( result , { ...EXPECTED_RESULT , partialResultToken : EXPECTED_NEXT_TOKEN } )
506
+ } )
507
+
508
+ it ( 'handles partialResultToken in request' , async ( ) => {
509
+ const manager = SessionManager . getInstance ( )
510
+ manager . createSession ( SAMPLE_SESSION_DATA )
511
+ await features . doInlineCompletionWithReferences (
512
+ {
513
+ textDocument : { uri : SOME_FILE . uri } ,
514
+ position : { line : 0 , character : 0 } ,
515
+ context : { triggerKind : InlineCompletionTriggerKind . Invoked } ,
516
+ partialResultToken : EXPECTED_NEXT_TOKEN ,
517
+ } ,
518
+ CancellationToken . None
519
+ )
520
+
521
+ const expectedGenerateSuggestionsRequest = {
522
+ fileContext : {
523
+ filename : SOME_FILE . uri ,
524
+ programmingLanguage : { languageName : 'csharp' } ,
525
+ leftFileContent : '' ,
526
+ rightFileContent : HELLO_WORLD_IN_CSHARP ,
527
+ } ,
528
+ maxResults : 5 ,
529
+ nextToken : EXPECTED_NEXT_TOKEN ,
530
+ }
531
+
532
+ sinon . assert . calledOnceWithExactly ( service . generateSuggestions , expectedGenerateSuggestionsRequest )
533
+ } )
534
+
479
535
describe ( 'Supplemental Context' , ( ) => {
480
536
it ( 'should send supplemental context when using token authentication' , async ( ) => {
481
537
const test_service = sinon . createStubInstance (
@@ -787,6 +843,7 @@ describe('CodeWhisperer Server', () => {
787
843
] ,
788
844
} ,
789
845
] ,
846
+ partialResultToken : undefined ,
790
847
}
791
848
service . generateSuggestions . returns (
792
849
Promise . resolve ( {
@@ -846,6 +903,7 @@ describe('CodeWhisperer Server', () => {
846
903
references : undefined ,
847
904
} ,
848
905
] ,
906
+ partialResultToken : undefined ,
849
907
}
850
908
service . generateSuggestions . returns (
851
909
Promise . resolve ( {
@@ -1703,7 +1761,7 @@ describe('CodeWhisperer Server', () => {
1703
1761
const EXPECTED_COMPLETION_RESPONSES = [
1704
1762
{ sessionId : '' , items : [ ] } ,
1705
1763
{ sessionId : '' , items : [ ] } ,
1706
- { sessionId : SESSION_IDS_LOG [ 2 ] , items : EXPECTED_RESULT . items } , // Last session wins
1764
+ { sessionId : SESSION_IDS_LOG [ 2 ] , items : EXPECTED_RESULT . items , partialResultToken : undefined } , // Last session wins
1707
1765
]
1708
1766
// Only last request must return completion items
1709
1767
assert . deepEqual ( getCompletionsResponses , EXPECTED_COMPLETION_RESPONSES )
0 commit comments