@@ -139,6 +139,35 @@ public void Should_Handle_Null_Data()
139
139
result . Should ( ) . Contain ( x => x . Handler == resolveHandler ) ;
140
140
}
141
141
142
+ [ Fact ]
143
+ public void Should_Handle_Simple_Json_Data ( )
144
+ {
145
+ // Given
146
+ var handlerMatcher = new ResolveCommandMatcher ( _logger ) ;
147
+ var resolveHandler = Substitute . For < ICompletionResolveHandler > ( ) ;
148
+ resolveHandler . CanResolve ( Arg . Any < CompletionItem > ( ) ) . Returns ( true ) ;
149
+
150
+ // When
151
+ var result = handlerMatcher . FindHandler ( new CompletionItem ( ) {
152
+ Data = new Uri ( "file:///c%3A/Users/mb/src/gh/Cake.Json/src/Cake.Json/Namespaces.cs" )
153
+ } ,
154
+ new List < HandlerDescriptor > {
155
+ new HandlerDescriptor ( DocumentNames . CompletionResolve ,
156
+ "Key" ,
157
+ resolveHandler ,
158
+ resolveHandler . GetType ( ) ,
159
+ typeof ( CompletionItem ) ,
160
+ null ,
161
+ null ,
162
+ ( ) => { } ) ,
163
+ } )
164
+ . ToArray ( ) ;
165
+
166
+ // Then
167
+ result . Should ( ) . NotBeNullOrEmpty ( ) ;
168
+ result . Should ( ) . Contain ( x => x . Handler == resolveHandler ) ;
169
+ }
170
+
142
171
[ Fact ]
143
172
public void Should_Return_CompletionResolve_Descriptor ( )
144
173
{
@@ -296,7 +325,7 @@ public void Should_FindPostProcessor_AsSelf_For_Completion()
296
325
"Key" ,
297
326
resolveHandler ,
298
327
resolveHandler . GetType ( ) ,
299
- typeof ( CodeLensParams ) ,
328
+ typeof ( CompletionParams ) ,
300
329
null ,
301
330
null ,
302
331
( ) => { } ) ;
@@ -325,7 +354,7 @@ public void Should_Update_CompletionItems_With_HandlerType()
325
354
"Key" ,
326
355
resolveHandler as IJsonRpcHandler ,
327
356
resolveHandler . GetType ( ) ,
328
- typeof ( CompletionItem ) ,
357
+ typeof ( CompletionParams ) ,
329
358
null ,
330
359
null ,
331
360
( ) => { } ) ;
@@ -363,7 +392,7 @@ public void Should_Update_CodeLensContainer_With_HandlerType()
363
392
"Key" ,
364
393
resolveHandler as IJsonRpcHandler ,
365
394
resolveHandler . GetType ( ) ,
366
- typeof ( CodeLens ) ,
395
+ typeof ( CodeLensParams ) ,
367
396
null ,
368
397
null ,
369
398
( ) => { } ) ;
@@ -385,5 +414,39 @@ public void Should_Update_CodeLensContainer_With_HandlerType()
385
414
responseItem . Data [ ResolveCommandMatcher . PrivateHandlerTypeName ] . Value < string > ( ) . Should ( ) . NotBeNullOrEmpty ( ) ;
386
415
responseItem . Data [ "data" ] [ "hello" ] . Value < string > ( ) . Should ( ) . Be ( "world" ) ;
387
416
}
417
+
418
+ [ Fact ]
419
+ public void Should_Update_CodeLens_Removing_HandlerType ( )
420
+ {
421
+ // Given
422
+ var handlerMatcher = new ResolveCommandMatcher ( _logger ) ;
423
+ var resolveHandler = Substitute . For ( new Type [ ] {
424
+ typeof ( ICodeLensHandler ) ,
425
+ typeof ( ICodeLensResolveHandler )
426
+ } , new object [ 0 ] ) ;
427
+ ( resolveHandler as ICodeLensResolveHandler ) . CanResolve ( Arg . Any < CodeLens > ( ) ) . Returns ( true ) ;
428
+ var descriptor = new HandlerDescriptor (
429
+ DocumentNames . CodeLensResolve ,
430
+ "Key" ,
431
+ resolveHandler as IJsonRpcHandler ,
432
+ resolveHandler . GetType ( ) ,
433
+ typeof ( CodeLens ) ,
434
+ null ,
435
+ null ,
436
+ ( ) => { } ) ;
437
+
438
+ var item = new CodeLens ( ) {
439
+ Data = JObject . FromObject ( new { data = new { hello = "world" } } )
440
+ } ;
441
+ item . Data [ ResolveCommandMatcher . PrivateHandlerTypeName ] = resolveHandler . GetType ( ) . FullName ;
442
+
443
+ // When
444
+ var response = handlerMatcher . Process ( descriptor , item ) ;
445
+
446
+ // Then
447
+ response . Should ( ) . Be ( item ) ;
448
+ item . Data ? [ ResolveCommandMatcher . PrivateHandlerTypeName ] . Should ( ) . BeNull ( ) ;
449
+ item . Data [ "hello" ] . Value < string > ( ) . Should ( ) . Be ( "world" ) ;
450
+ }
388
451
}
389
452
}
0 commit comments