11// Copyright (c) Microsoft Open Technologies, Inc. All rights reserved.
22// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
33
4+ using System . Collections . Generic ;
45using System . Reflection ;
6+ using Microsoft . AspNet . Razor . Generator . Compiler ;
57using Microsoft . AspNet . Razor . TagHelpers ;
68using Moq ;
79using Xunit ;
@@ -10,6 +12,34 @@ namespace Microsoft.AspNet.Razor.Test.Generator
1012{
1113 public class CSharpTagHelperRenderingTest : TagHelperTestBase
1214 {
15+ [ Fact ]
16+ public void CSharpCodeGenerator_CorrectlyGeneratesMappings_ForAddTagHelperDirective ( )
17+ {
18+ // Act & Assert
19+ RunTagHelperTest ( "AddTagHelperDirective" ,
20+ designTimeMode : true ,
21+ expectedDesignTimePragmas : new List < LineMapping > ( )
22+ {
23+ BuildLineMapping ( documentAbsoluteIndex : 14 ,
24+ documentLineIndex : 0 ,
25+ generatedAbsoluteIndex : 433 ,
26+ generatedLineIndex : 14 ,
27+ characterOffsetIndex : 14 ,
28+ contentLength : 11 )
29+ } ) ;
30+ }
31+
32+ [ Fact ]
33+ public void TagHelpers_Directive_GenerateDesignTimeMappings ( )
34+ {
35+ // Act & Assert
36+ RunTagHelperTest ( "AddTagHelperDirective" ,
37+ designTimeMode : true ,
38+ tagHelperDescriptors : new [ ] {
39+ new TagHelperDescriptor ( "p" , "pTagHelper" , ContentBehavior . None )
40+ } ) ;
41+ }
42+
1343 [ Theory ]
1444 [ InlineData ( "TagHelpersInSection" ) ]
1545 [ InlineData ( "TagHelpersInHelper" ) ]
@@ -19,21 +49,20 @@ public void TagHelpers_WithinHelpersAndSections_GeneratesExpectedOutput(string t
1949 var propertyInfoMock = new Mock < PropertyInfo > ( ) ;
2050 propertyInfoMock . Setup ( propertyInfo => propertyInfo . PropertyType ) . Returns ( typeof ( string ) ) ;
2151 propertyInfoMock . Setup ( propertyInfo => propertyInfo . Name ) . Returns ( "BoundProperty" ) ;
22- var tagHelperDescriptorProvider = new TagHelperDescriptorProvider (
23- new TagHelperDescriptor [ ]
24- {
25- new TagHelperDescriptor ( "MyTagHelper" ,
26- "MyTagHelper" ,
27- ContentBehavior . None ,
28- new [ ] {
29- new TagHelperAttributeDescriptor ( "BoundProperty" ,
30- propertyInfoMock . Object )
31- } ) ,
32- new TagHelperDescriptor ( "NestedTagHelper" , "NestedTagHelper" , ContentBehavior . Modify )
33- } ) ;
52+ var tagHelperDescriptors = new TagHelperDescriptor [ ]
53+ {
54+ new TagHelperDescriptor ( "MyTagHelper" ,
55+ "MyTagHelper" ,
56+ ContentBehavior . None ,
57+ new [ ] {
58+ new TagHelperAttributeDescriptor ( "BoundProperty" ,
59+ propertyInfoMock . Object )
60+ } ) ,
61+ new TagHelperDescriptor ( "NestedTagHelper" , "NestedTagHelper" , ContentBehavior . Modify )
62+ } ;
3463
3564 // Act & Assert
36- RunTagHelperTest ( testType , tagHelperDescriptorProvider : tagHelperDescriptorProvider ) ;
65+ RunTagHelperTest ( testType , tagHelperDescriptors : tagHelperDescriptors ) ;
3766 }
3867
3968 [ Theory ]
@@ -52,50 +81,48 @@ public void TagHelpers_GenerateExpectedOutput(string testType)
5281 var checkedPropertyInfo = new Mock < PropertyInfo > ( ) ;
5382 checkedPropertyInfo . Setup ( propertyInfo => propertyInfo . PropertyType ) . Returns ( typeof ( bool ) ) ;
5483 checkedPropertyInfo . Setup ( propertyInfo => propertyInfo . Name ) . Returns ( "Checked" ) ;
55- var tagHelperDescriptorProvider = new TagHelperDescriptorProvider (
56- new TagHelperDescriptor [ ]
57- {
58- new TagHelperDescriptor ( "p" ,
59- "PTagHelper" ,
60- ContentBehavior . None ,
61- new [ ] {
62- new TagHelperAttributeDescriptor ( "foo" , pFooPropertyInfo . Object )
63- } ) ,
64- new TagHelperDescriptor ( "input" ,
65- "InputTagHelper" ,
66- ContentBehavior . None ,
67- new TagHelperAttributeDescriptor [ ] {
68- new TagHelperAttributeDescriptor ( "type" , inputTypePropertyInfo . Object )
69- } ) ,
70- new TagHelperDescriptor ( "input" ,
71- "InputTagHelper2" ,
72- ContentBehavior . None ,
73- new TagHelperAttributeDescriptor [ ] {
74- new TagHelperAttributeDescriptor ( "type" , inputTypePropertyInfo . Object ) ,
75- new TagHelperAttributeDescriptor ( "checked" , checkedPropertyInfo . Object )
76- } ) ,
77- } ) ;
84+ var tagHelperDescriptors = new TagHelperDescriptor [ ]
85+ {
86+ new TagHelperDescriptor ( "p" ,
87+ "PTagHelper" ,
88+ ContentBehavior . None ,
89+ new [ ] {
90+ new TagHelperAttributeDescriptor ( "foo" , pFooPropertyInfo . Object )
91+ } ) ,
92+ new TagHelperDescriptor ( "input" ,
93+ "InputTagHelper" ,
94+ ContentBehavior . None ,
95+ new TagHelperAttributeDescriptor [ ] {
96+ new TagHelperAttributeDescriptor ( "type" , inputTypePropertyInfo . Object )
97+ } ) ,
98+ new TagHelperDescriptor ( "input" ,
99+ "InputTagHelper2" ,
100+ ContentBehavior . None ,
101+ new TagHelperAttributeDescriptor [ ] {
102+ new TagHelperAttributeDescriptor ( "type" , inputTypePropertyInfo . Object ) ,
103+ new TagHelperAttributeDescriptor ( "checked" , checkedPropertyInfo . Object )
104+ } )
105+ } ;
78106
79107 // Act & Assert
80- RunTagHelperTest ( testType , tagHelperDescriptorProvider : tagHelperDescriptorProvider ) ;
108+ RunTagHelperTest ( testType , tagHelperDescriptors : tagHelperDescriptors ) ;
81109 }
82110
83111 [ Fact ]
84112 public void TagHelpers_WithContentBehaviors_GenerateExpectedOutput ( )
85113 {
86114 // Arrange
87- var tagHelperDescriptorProvider = new TagHelperDescriptorProvider (
88- new TagHelperDescriptor [ ]
89- {
115+ var tagHelperDescriptors = new TagHelperDescriptor [ ]
116+ {
90117 new TagHelperDescriptor ( "modify" , "ModifyTagHelper" , ContentBehavior . Modify ) ,
91118 new TagHelperDescriptor ( "none" , "NoneTagHelper" , ContentBehavior . None ) ,
92119 new TagHelperDescriptor ( "append" , "AppendTagHelper" , ContentBehavior . Append ) ,
93120 new TagHelperDescriptor ( "prepend" , "PrependTagHelper" , ContentBehavior . Prepend ) ,
94121 new TagHelperDescriptor ( "replace" , "ReplaceTagHelper" , ContentBehavior . Replace ) ,
95- } ) ;
122+ } ;
96123
97124 // Act & Assert
98- RunTagHelperTest ( "ContentBehaviorTagHelpers" , tagHelperDescriptorProvider : tagHelperDescriptorProvider ) ;
125+ RunTagHelperTest ( "ContentBehaviorTagHelpers" , tagHelperDescriptors : tagHelperDescriptors ) ;
99126 }
100127 }
101128}
0 commit comments