77using Microsoft . AspNet . Razor ;
88using Microsoft . AspNet . Razor . Runtime . TagHelpers ;
99using Microsoft . AspNet . Razor . TagHelpers ;
10+ using Microsoft . AspNet . Razor . Test . Internal ;
1011using Microsoft . AspNet . Tooling . Razor . Models . OutgoingMessages ;
1112using Microsoft . AspNet . Tooling . Razor . Tests ;
1213using Microsoft . Framework . Runtime ;
@@ -175,7 +176,65 @@ public void ProcessMessage_ResolveTagHelperDescriptors_ResolvesTagHelperDescript
175176 var responseData = responseMessage . Data ;
176177 Assert . Equal ( CustomTagHelperAssembly , responseData . AssemblyName , StringComparer . Ordinal ) ;
177178 var actualDescriptor = Assert . Single ( responseData . Descriptors ) ;
178- Assert . Equal ( CustomTagHelperDescriptor , actualDescriptor , TagHelperDescriptorComparer . Default ) ;
179+ Assert . Equal (
180+ CustomTagHelperDescriptor ,
181+ actualDescriptor ,
182+ CaseSensitiveTagHelperDescriptorComparer . Default ) ;
183+ Assert . Empty ( responseData . Errors ) ;
184+ Assert . True ( handled ) ;
185+ }
186+
187+ [ Fact ]
188+ public void ProcessMessage_ResolveTagHelperDescriptors_ResolvesDesignTimeTagHelperDescriptors ( )
189+ {
190+ // Arrange
191+ var expectedSourceLocation = new SourceLocation ( absoluteIndex : 1 , lineIndex : 2 , characterIndex : 3 ) ;
192+ var sourceLocationJson = JsonConvert . SerializeObject ( expectedSourceLocation ) ;
193+ var messageData = new JObject
194+ {
195+ { "AssemblyName" , CustomTagHelperAssembly } ,
196+ { "SourceLocation" , JObject . Parse ( sourceLocationJson ) }
197+ } ;
198+ var message = new JObject
199+ {
200+ { "MessageType" , RazorPluginMessageTypes . ResolveTagHelperDescriptors } ,
201+ { "Data" , messageData } ,
202+ } ;
203+ ResolveTagHelperDescriptorsMessage responseMessage = null ;
204+ var messageBroker = new TestPluginMessageBroker (
205+ data => responseMessage = ( ResolveTagHelperDescriptorsMessage ) data ) ;
206+ var assembly = new TestAssembly ( typeof ( DesignTimeTagHelper ) ) ;
207+ var assemblyNameLookups = new Dictionary < string , Assembly >
208+ {
209+ { CustomTagHelperAssembly , assembly }
210+ } ;
211+ var assemblyLoadContext = new TestAssemblyLoadContext ( assemblyNameLookups ) ;
212+ var plugin = new RazorPlugin ( messageBroker ) ;
213+ var expectedDescriptor = new TagHelperDescriptor (
214+ DefaultPrefix ,
215+ "design-time" ,
216+ typeof ( DesignTimeTagHelper ) . FullName ,
217+ typeof ( DesignTimeTagHelper ) . Assembly . GetName ( ) . Name ,
218+ attributes : new TagHelperAttributeDescriptor [ 0 ] ,
219+ requiredAttributes : new string [ 0 ] ,
220+ designTimeDescriptor : new TagHelperDesignTimeDescriptor (
221+ summary : null ,
222+ remarks : null ,
223+ outputElementHint : "strong" ) ) ;
224+
225+ // Act
226+ var handled = plugin . ProcessMessage ( message , assemblyLoadContext ) ;
227+
228+ // Assert
229+ Assert . NotNull ( responseMessage ) ;
230+ Assert . Equal (
231+ RazorPluginMessageTypes . ResolveTagHelperDescriptors ,
232+ responseMessage . MessageType ,
233+ StringComparer . Ordinal ) ;
234+ var responseData = responseMessage . Data ;
235+ Assert . Equal ( CustomTagHelperAssembly , responseData . AssemblyName , StringComparer . Ordinal ) ;
236+ var actualDescriptor = Assert . Single ( responseData . Descriptors ) ;
237+ Assert . Equal ( expectedDescriptor , actualDescriptor , CaseSensitiveTagHelperDescriptorComparer . Default ) ;
179238 Assert . Empty ( responseData . Errors ) ;
180239 Assert . True ( handled ) ;
181240 }
@@ -244,4 +303,9 @@ Assembly IAssemblyLoadContext.Load(AssemblyName assemblyName)
244303 public class CustomTagHelper : TagHelper
245304 {
246305 }
306+
307+ [ OutputElementHint ( "strong" ) ]
308+ public class DesignTimeTagHelper : TagHelper
309+ {
310+ }
247311}
0 commit comments