@@ -14,6 +14,10 @@ import { createMockDocument } from 'aws-core-vscode/test'
14
14
import { CursorUpdateManager } from '../../../../../src/app/inline/cursorUpdateManager'
15
15
import { CodeWhispererStatusBarManager } from 'aws-core-vscode/codewhisperer'
16
16
import { 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'
17
21
18
22
describe ( 'RecommendationService' , ( ) => {
19
23
let languageClient : LanguageClient
@@ -28,6 +32,10 @@ describe('RecommendationService', () => {
28
32
const mockPosition = { line : 0 , character : 0 } as Position
29
33
const mockContext = { triggerKind : InlineCompletionTriggerKind . Automatic , selectedCompletionInfo : undefined }
30
34
const mockToken = { isCancellationRequested : false } as CancellationToken
35
+ const mockDocumentEventListener = {
36
+ isLastEventDeletion : ( filepath : string ) => false ,
37
+ getLastDocumentChangeEvent : ( filepath : string ) => undefined ,
38
+ } as DocumentEventListener
31
39
const mockInlineCompletionItemOne = {
32
40
insertText : 'ItemOne' ,
33
41
} as InlineCompletionItem
@@ -134,12 +142,19 @@ describe('RecommendationService', () => {
134
142
mockPosition ,
135
143
mockContext ,
136
144
mockToken ,
137
- true
145
+ true ,
146
+ mockDocumentEventListener
138
147
)
139
148
140
149
// 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 ]
143
158
assert . deepStrictEqual ( requestArgs , {
144
159
textDocument : {
145
160
uri : 'file:///test.py' ,
@@ -177,12 +192,19 @@ describe('RecommendationService', () => {
177
192
mockPosition ,
178
193
mockContext ,
179
194
mockToken ,
180
- true
195
+ true ,
196
+ mockDocumentEventListener
181
197
)
182
198
183
199
// 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 ]
186
208
const expectedRequestArgs = {
187
209
textDocument : {
188
210
uri : 'file:///test.py' ,
@@ -192,7 +214,7 @@ describe('RecommendationService', () => {
192
214
documentChangeParams : undefined ,
193
215
openTabFilepaths : [ ] ,
194
216
}
195
- const secondRequestArgs = sendRequestStub . secondCall . args [ 1 ]
217
+ const secondRequestArgs = completionCalls [ 1 ] . args [ 1 ]
196
218
assert . deepStrictEqual ( firstRequestArgs , expectedRequestArgs )
197
219
assert . deepStrictEqual ( secondRequestArgs , {
198
220
...expectedRequestArgs ,
@@ -218,7 +240,8 @@ describe('RecommendationService', () => {
218
240
mockPosition ,
219
241
mockContext ,
220
242
mockToken ,
221
- true
243
+ true ,
244
+ mockDocumentEventListener
222
245
)
223
246
224
247
// Verify recordCompletionRequest was called
@@ -235,6 +258,7 @@ describe('RecommendationService', () => {
235
258
mockContext ,
236
259
mockToken ,
237
260
true ,
261
+ mockDocumentEventListener ,
238
262
{
239
263
showUi : false ,
240
264
emitTelemetry : true ,
@@ -254,7 +278,8 @@ describe('RecommendationService', () => {
254
278
mockPosition ,
255
279
mockContext ,
256
280
mockToken ,
257
- true
281
+ true ,
282
+ mockDocumentEventListener
258
283
)
259
284
260
285
// Verify UI methods were called
@@ -286,6 +311,7 @@ describe('RecommendationService', () => {
286
311
mockContext ,
287
312
mockToken ,
288
313
true ,
314
+ mockDocumentEventListener ,
289
315
options
290
316
)
291
317
0 commit comments