@@ -14,6 +14,10 @@ import { createMockDocument } from 'aws-core-vscode/test'
1414import { CursorUpdateManager } from '../../../../../src/app/inline/cursorUpdateManager'
1515import { CodeWhispererStatusBarManager } from 'aws-core-vscode/codewhisperer'
1616import { globals } from 'aws-core-vscode/shared'
17+ import { DocumentEventListener } from '../../../../../src/app/inline/documentEventListener'
18+
19+ const completionApi = 'aws/textDocument/inlineCompletionWithReferences'
20+ const editApi = 'aws/textDocument/editCompletion'
1721
1822describe ( 'RecommendationService' , ( ) => {
1923 let languageClient : LanguageClient
@@ -28,6 +32,10 @@ describe('RecommendationService', () => {
2832 const mockPosition = { line : 0 , character : 0 } as Position
2933 const mockContext = { triggerKind : InlineCompletionTriggerKind . Automatic , selectedCompletionInfo : undefined }
3034 const mockToken = { isCancellationRequested : false } as CancellationToken
35+ const mockDocumentEventListener = {
36+ isLastEventDeletion : ( filepath : string ) => false ,
37+ getLastDocumentChangeEvent : ( filepath : string ) => undefined ,
38+ } as DocumentEventListener
3139 const mockInlineCompletionItemOne = {
3240 insertText : 'ItemOne' ,
3341 } as InlineCompletionItem
@@ -134,12 +142,19 @@ describe('RecommendationService', () => {
134142 mockPosition ,
135143 mockContext ,
136144 mockToken ,
137- true
145+ true ,
146+ mockDocumentEventListener
138147 )
139148
140149 // Verify sendRequest was called with correct parameters
141- assert ( sendRequestStub . calledOnce )
142- const requestArgs = sendRequestStub . firstCall . args [ 1 ]
150+ const cs = sendRequestStub . getCalls ( )
151+ const completionCalls = cs . filter ( ( c ) => c . firstArg === completionApi )
152+ const editCalls = cs . filter ( ( c ) => c . firstArg === editApi )
153+ assert . strictEqual ( cs . length , 2 )
154+ assert . strictEqual ( completionCalls . length , 1 )
155+ assert . strictEqual ( editCalls . length , 1 )
156+
157+ const requestArgs = completionCalls [ 0 ] . args [ 1 ]
143158 assert . deepStrictEqual ( requestArgs , {
144159 textDocument : {
145160 uri : 'file:///test.py' ,
@@ -177,12 +192,19 @@ describe('RecommendationService', () => {
177192 mockPosition ,
178193 mockContext ,
179194 mockToken ,
180- true
195+ true ,
196+ mockDocumentEventListener
181197 )
182198
183199 // Verify sendRequest was called with correct parameters
184- assert ( sendRequestStub . calledTwice )
185- const firstRequestArgs = sendRequestStub . firstCall . args [ 1 ]
200+ const cs = sendRequestStub . getCalls ( )
201+ const completionCalls = cs . filter ( ( c ) => c . firstArg === completionApi )
202+ const editCalls = cs . filter ( ( c ) => c . firstArg === editApi )
203+ assert . strictEqual ( cs . length , 3 )
204+ assert . strictEqual ( completionCalls . length , 2 )
205+ assert . strictEqual ( editCalls . length , 1 )
206+
207+ const firstRequestArgs = completionCalls [ 0 ] . args [ 1 ]
186208 const expectedRequestArgs = {
187209 textDocument : {
188210 uri : 'file:///test.py' ,
@@ -192,7 +214,7 @@ describe('RecommendationService', () => {
192214 documentChangeParams : undefined ,
193215 openTabFilepaths : [ ] ,
194216 }
195- const secondRequestArgs = sendRequestStub . secondCall . args [ 1 ]
217+ const secondRequestArgs = completionCalls [ 1 ] . args [ 1 ]
196218 assert . deepStrictEqual ( firstRequestArgs , expectedRequestArgs )
197219 assert . deepStrictEqual ( secondRequestArgs , {
198220 ...expectedRequestArgs ,
@@ -218,7 +240,8 @@ describe('RecommendationService', () => {
218240 mockPosition ,
219241 mockContext ,
220242 mockToken ,
221- true
243+ true ,
244+ mockDocumentEventListener
222245 )
223246
224247 // Verify recordCompletionRequest was called
@@ -235,6 +258,7 @@ describe('RecommendationService', () => {
235258 mockContext ,
236259 mockToken ,
237260 true ,
261+ mockDocumentEventListener ,
238262 {
239263 showUi : false ,
240264 emitTelemetry : true ,
@@ -254,7 +278,8 @@ describe('RecommendationService', () => {
254278 mockPosition ,
255279 mockContext ,
256280 mockToken ,
257- true
281+ true ,
282+ mockDocumentEventListener
258283 )
259284
260285 // Verify UI methods were called
@@ -286,6 +311,7 @@ describe('RecommendationService', () => {
286311 mockContext ,
287312 mockToken ,
288313 true ,
314+ mockDocumentEventListener ,
289315 options
290316 )
291317
0 commit comments