@@ -139,6 +139,35 @@ public void Should_Handle_Null_Data()
139139 result . Should ( ) . Contain ( x => x . Handler == resolveHandler ) ;
140140 }
141141
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+
142171 [ Fact ]
143172 public void Should_Return_CompletionResolve_Descriptor ( )
144173 {
@@ -296,7 +325,7 @@ public void Should_FindPostProcessor_AsSelf_For_Completion()
296325 "Key" ,
297326 resolveHandler ,
298327 resolveHandler . GetType ( ) ,
299- typeof ( CodeLensParams ) ,
328+ typeof ( CompletionParams ) ,
300329 null ,
301330 null ,
302331 ( ) => { } ) ;
@@ -325,7 +354,7 @@ public void Should_Update_CompletionItems_With_HandlerType()
325354 "Key" ,
326355 resolveHandler as IJsonRpcHandler ,
327356 resolveHandler . GetType ( ) ,
328- typeof ( CompletionItem ) ,
357+ typeof ( CompletionParams ) ,
329358 null ,
330359 null ,
331360 ( ) => { } ) ;
@@ -363,7 +392,7 @@ public void Should_Update_CodeLensContainer_With_HandlerType()
363392 "Key" ,
364393 resolveHandler as IJsonRpcHandler ,
365394 resolveHandler . GetType ( ) ,
366- typeof ( CodeLens ) ,
395+ typeof ( CodeLensParams ) ,
367396 null ,
368397 null ,
369398 ( ) => { } ) ;
@@ -385,5 +414,39 @@ public void Should_Update_CodeLensContainer_With_HandlerType()
385414 responseItem . Data [ ResolveCommandMatcher . PrivateHandlerTypeName ] . Value < string > ( ) . Should ( ) . NotBeNullOrEmpty ( ) ;
386415 responseItem . Data [ "data" ] [ "hello" ] . Value < string > ( ) . Should ( ) . Be ( "world" ) ;
387416 }
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+ }
388451 }
389452}
0 commit comments