4
4
using System . Collections . Generic ;
5
5
using System . IO ;
6
6
using System . Reflection ;
7
+ using System . Threading . Tasks ;
7
8
using Microsoft . AspNet . Http ;
8
9
using Microsoft . AspNet . Mvc . ModelBinding ;
10
+ using Microsoft . AspNet . Mvc . Razor ;
9
11
using Microsoft . AspNet . Mvc . Rendering ;
10
12
using Microsoft . AspNet . Razor . Runtime . TagHelpers ;
11
13
using Microsoft . AspNet . Routing ;
@@ -17,50 +19,94 @@ namespace Microsoft.AspNet.Mvc.TagHelpers
17
19
public class ValidationMessageTagHelperTest
18
20
{
19
21
[ Fact ]
20
- public void Process_CallsIntoGenerateValidationMessageWithExpectedParameters ( )
22
+ public async Task ProcessAsync_GeneratesExpectedOutput ( )
23
+ {
24
+ // Arrange
25
+ var metadataProvider = new DataAnnotationsModelMetadataProvider ( ) ;
26
+ var modelExpression = CreateModelExpression ( "Name" ) ;
27
+ var validationMessageTagHelper = new ValidationMessageTagHelper
28
+ {
29
+ For = modelExpression
30
+ } ;
31
+
32
+ var tagHelperContext = new TagHelperContext (
33
+ allAttributes : new Dictionary < string , object >
34
+ {
35
+ { "id" , "myvalidationmessage" } ,
36
+ { "for" , modelExpression } ,
37
+ } ) ;
38
+ var output = new TagHelperOutput (
39
+ "original tag name" ,
40
+ attributes : new Dictionary < string , string >
41
+ {
42
+ { "id" , "myvalidationmessage" }
43
+ } ,
44
+ content : "Something" ) ;
45
+
46
+ var htmlGenerator = new TestableHtmlGenerator ( metadataProvider ) ;
47
+ var viewContext = TestableHtmlGenerator . GetViewContext ( model : null ,
48
+ htmlGenerator : htmlGenerator ,
49
+ metadataProvider : metadataProvider ) ;
50
+
51
+ var activator = new DefaultTagHelperActivator ( ) ;
52
+ activator . Activate ( validationMessageTagHelper , viewContext ) ;
53
+
54
+ // Act
55
+ await validationMessageTagHelper . ProcessAsync ( tagHelperContext , output ) ;
56
+
57
+ // Assert
58
+ Assert . Equal ( 4 , output . Attributes . Count ) ;
59
+ var attribute = Assert . Single ( output . Attributes , kvp => kvp . Key . Equals ( "id" ) ) ;
60
+ Assert . Equal ( "myvalidationmessage" , attribute . Value ) ;
61
+ attribute = Assert . Single ( output . Attributes , kvp => kvp . Key . Equals ( "class" ) ) ;
62
+ Assert . Equal ( "field-validation-valid" , attribute . Value ) ;
63
+ attribute = Assert . Single ( output . Attributes , kvp => kvp . Key . Equals ( "data-valmsg-for" ) ) ;
64
+ Assert . Equal ( "Name" , attribute . Value ) ;
65
+ attribute = Assert . Single ( output . Attributes , kvp => kvp . Key . Equals ( "data-valmsg-replace" ) ) ;
66
+ Assert . Equal ( "false" , attribute . Value ) ;
67
+ Assert . Equal ( "Something" , output . Content ) ;
68
+ Assert . Equal ( "original tag name" , output . TagName ) ;
69
+ }
70
+
71
+ [ Fact ]
72
+ public async Task ProcessAsync_CallsIntoGenerateValidationMessageWithExpectedParameters ( )
21
73
{
22
74
// Arrange
23
75
var validationMessageTagHelper = new ValidationMessageTagHelper
24
76
{
25
77
For = CreateModelExpression ( "Hello" )
26
78
} ;
27
- var called = false ;
28
79
var output = new TagHelperOutput (
29
80
"span" ,
30
81
attributes : new Dictionary < string , string > ( ) ,
31
82
content : "Content of validation message" ) ;
32
83
33
84
var expectedViewContext = CreateViewContext ( ) ;
34
85
var generator = new Mock < IHtmlGenerator > ( ) ;
35
- generator . Setup ( mock =>
36
- mock . GenerateValidationMessage ( It . IsAny < ViewContext > ( ) ,
37
- It . IsAny < string > ( ) ,
38
- It . IsAny < string > ( ) ,
39
- It . IsAny < string > ( ) ,
40
- It . IsAny < object > ( ) ) )
41
- . Callback < ViewContext , string , string , string , object > (
42
- ( viewContext , name , message , tag , htmlAttributes ) =>
43
- {
44
- called = true ;
45
-
46
- Assert . Same ( expectedViewContext , viewContext ) ;
47
- Assert . Equal ( "Hello" , name ) ;
48
- Assert . Equal ( "Content of validation message" , message ) ;
49
- Assert . Equal ( "span" , tag ) ;
50
- Assert . Null ( htmlAttributes ) ;
51
- } )
52
- . Returns ( new TagBuilder ( "span" ) ) ;
86
+ var setup = generator . Setup ( mock =>
87
+ mock . GenerateValidationMessage ( expectedViewContext ,
88
+ "Hello" ,
89
+ "Content of validation message" ,
90
+ null ,
91
+ null ) ) ;
92
+ setup . Returns ( new TagBuilder ( "span" ) ) ;
93
+ setup . Verifiable ( ) ;
53
94
54
95
SetViewContextAndGenerator ( validationMessageTagHelper , expectedViewContext , generator . Object ) ;
55
96
56
97
// Act & Assert
57
- validationMessageTagHelper . Process ( context : null , output : output ) ;
98
+ await validationMessageTagHelper . ProcessAsync ( context : null , output : output ) ;
58
99
59
- Assert . True ( called ) ;
100
+ generator . Verify ( ) ;
101
+ Assert . Equal ( "span" , output . TagName ) ;
102
+ Assert . Empty ( output . Attributes ) ;
103
+
104
+ // Our mock doesn't set any TagBuilder content.
105
+ Assert . Empty ( output . Content ) ;
60
106
}
61
107
62
108
[ Fact ]
63
- public void Process_MergesTagBuilderFromGenerateValidationMessage ( )
109
+ public async Task ProcessAsync_MergesTagBuilderFromGenerateValidationMessage ( )
64
110
{
65
111
// Arrange
66
112
var validationMessageTagHelper = new ValidationMessageTagHelper
@@ -81,21 +127,21 @@ public void Process_MergesTagBuilderFromGenerateValidationMessage()
81
127
82
128
var expectedViewContext = CreateViewContext ( ) ;
83
129
var generator = new Mock < IHtmlGenerator > ( MockBehavior . Strict ) ;
84
- generator . Setup ( mock =>
130
+ var setup = generator . Setup ( mock =>
85
131
mock . GenerateValidationMessage ( It . IsAny < ViewContext > ( ) ,
86
132
It . IsAny < string > ( ) ,
87
133
It . IsAny < string > ( ) ,
88
134
It . IsAny < string > ( ) ,
89
- It . IsAny < object > ( ) ) )
90
- . Returns ( tagBuilder ) ;
135
+ It . IsAny < object > ( ) ) ) ;
136
+ setup . Returns ( tagBuilder ) ;
91
137
92
138
SetViewContextAndGenerator ( validationMessageTagHelper , expectedViewContext , generator . Object ) ;
93
139
94
140
// Act
95
- validationMessageTagHelper . Process ( context : null , output : output ) ;
141
+ await validationMessageTagHelper . ProcessAsync ( context : null , output : output ) ;
96
142
97
143
// Assert
98
- Assert . Equal ( output . TagName , "span2 " ) ;
144
+ Assert . Equal ( output . TagName , "span " ) ;
99
145
Assert . Equal ( 2 , output . Attributes . Count ) ;
100
146
var attribute = Assert . Single ( output . Attributes , kvp => kvp . Key . Equals ( "data-foo" ) ) ;
101
147
Assert . Equal ( "bar" , attribute . Value ) ;
@@ -105,7 +151,7 @@ public void Process_MergesTagBuilderFromGenerateValidationMessage()
105
151
}
106
152
107
153
[ Fact ]
108
- public void Process_DoesNothingIfNullFor ( )
154
+ public async Task ProcessAsync_DoesNothingIfNullFor ( )
109
155
{
110
156
// Arrange
111
157
var validationMessageTagHelper = new ValidationMessageTagHelper ( ) ;
@@ -119,9 +165,10 @@ public void Process_DoesNothingIfNullFor()
119
165
120
166
SetViewContextAndGenerator ( validationMessageTagHelper , expectedViewContext , generator . Object ) ;
121
167
122
- // Act & Assert
123
- validationMessageTagHelper . Process ( context : null , output : output ) ;
168
+ // Act
169
+ await validationMessageTagHelper . ProcessAsync ( context : null , output : output ) ;
124
170
171
+ // Assert
125
172
Assert . Equal ( "span" , output . TagName ) ;
126
173
Assert . Empty ( output . Attributes ) ;
127
174
Assert . Equal ( "Content of validation message" , output . Content ) ;
0 commit comments