@@ -21,24 +21,25 @@ protected override void ConfigureProjectEngine(RazorProjectEngineBuilder builder
21
21
builder . Features . Add ( new MvcViewDocumentClassifierPass ( ) ) ;
22
22
}
23
23
24
+ protected override void ConfigureProcessor ( RazorCodeDocumentProcessor processor )
25
+ {
26
+ processor . RunPhasesTo < IRazorDocumentClassifierPhase > ( ) ;
27
+
28
+ // Note: InheritsDirectivePass needs to run before ModelDirective.Pass.
29
+ processor . ExecutePass < InheritsDirectivePass > ( ) ;
30
+ }
31
+
24
32
[ Fact ]
25
33
public void ModelDirective_GetModelType_GetsTypeFromFirstWellFormedDirective ( )
26
34
{
27
35
// Arrange
28
- var projectEngine = CreateProjectEngine ( ) ;
29
-
30
- var codeDocument = projectEngine . CreateCodeDocument ( @"
36
+ var processor = CreateAndInitializeCodeDocument ( @"
31
37
@model Type1
32
38
@model Type2
33
39
@model
34
40
" ) ;
35
41
36
- var runner = RazorProjectEngineRunner . From ( projectEngine , codeDocument ) ;
37
-
38
- runner . RunPhasesTo < IRazorDocumentClassifierPhase > ( )
39
- . ExecutePass < InheritsDirectivePass > ( ) ;
40
-
41
- var documentNode = codeDocument . GetDocumentIntermediateNode ( ) ;
42
+ var documentNode = processor . GetDocumentNode ( ) ;
42
43
43
44
// Act
44
45
var result = ModelDirective . GetModelType ( documentNode ) ;
@@ -51,14 +52,9 @@ @model Type2
51
52
public void ModelDirective_GetModelType_DefaultsToDynamic ( )
52
53
{
53
54
// Arrange
54
- var projectEngine = CreateProjectEngine ( ) ;
55
- var codeDocument = projectEngine . CreateCodeDocument ( @" " ) ;
56
- var runner = RazorProjectEngineRunner . From ( projectEngine , codeDocument ) ;
57
-
58
- runner . RunPhasesTo < IRazorDocumentClassifierPhase > ( )
59
- . ExecutePass < InheritsDirectivePass > ( ) ;
55
+ var processor = CreateAndInitializeCodeDocument ( @" " ) ;
60
56
61
- var documentNode = codeDocument . GetDocumentIntermediateNode ( ) ;
57
+ var documentNode = processor . GetDocumentNode ( ) ;
62
58
63
59
// Act
64
60
var result = ModelDirective . GetModelType ( documentNode ) ;
@@ -71,22 +67,15 @@ public void ModelDirective_GetModelType_DefaultsToDynamic()
71
67
public void ModelDirectivePass_Execute_ReplacesTModelInBaseType ( )
72
68
{
73
69
// Arrange
74
- var projectEngine = CreateProjectEngine ( ) ;
75
-
76
- var codeDocument = projectEngine . CreateCodeDocument ( @"
70
+ var processor = CreateAndInitializeCodeDocument ( @"
77
71
@inherits BaseType<TModel>
78
72
@model Type1
79
73
" ) ;
80
74
81
- var runner = RazorProjectEngineRunner . From ( projectEngine , codeDocument ) ;
82
-
83
- runner . RunPhasesTo < IRazorDocumentClassifierPhase > ( )
84
- . ExecutePass < InheritsDirectivePass > ( ) ;
85
-
86
75
// Act
87
- runner . ExecutePass < ModelDirective . Pass > ( ) ;
76
+ processor . ExecutePass < ModelDirective . Pass > ( ) ;
88
77
89
- var documentNode = codeDocument . GetDocumentIntermediateNode ( ) ;
78
+ var documentNode = processor . GetDocumentNode ( ) ;
90
79
91
80
// Assert
92
81
var @class = documentNode . FindClassNode ( ) ;
@@ -105,23 +94,16 @@ @model Type1
105
94
public void ModelDirectivePass_Execute_ReplacesTModelInBaseType_DifferentOrdering ( )
106
95
{
107
96
// Arrange
108
- var projectEngine = CreateProjectEngine ( ) ;
109
-
110
- var codeDocument = projectEngine . CreateCodeDocument ( @"
97
+ var processor = CreateAndInitializeCodeDocument ( @"
111
98
@model Type1
112
99
@inherits BaseType<TModel>
113
100
@model Type2
114
101
" ) ;
115
102
116
- var runner = RazorProjectEngineRunner . From ( projectEngine , codeDocument ) ;
117
-
118
- runner . RunPhasesTo < IRazorDocumentClassifierPhase > ( )
119
- . ExecutePass < InheritsDirectivePass > ( ) ;
120
-
121
103
// Act
122
- runner . ExecutePass < ModelDirective . Pass > ( ) ;
104
+ processor . ExecutePass < ModelDirective . Pass > ( ) ;
123
105
124
- var documentNode = codeDocument . GetDocumentIntermediateNode ( ) ;
106
+ var documentNode = processor . GetDocumentNode ( ) ;
125
107
126
108
// Assert
127
109
var @class = documentNode . FindClassNode ( ) ;
@@ -140,22 +122,15 @@ @model Type2
140
122
public void ModelDirectivePass_Execute_NoOpWithoutTModel ( )
141
123
{
142
124
// Arrange
143
- var projectEngine = CreateProjectEngine ( ) ;
144
-
145
- var codeDocument = projectEngine . CreateCodeDocument ( @"
125
+ var processor = CreateAndInitializeCodeDocument ( @"
146
126
@inherits BaseType
147
127
@model Type1
148
128
" ) ;
149
129
150
- var runner = RazorProjectEngineRunner . From ( projectEngine , codeDocument ) ;
151
-
152
- runner . RunPhasesTo < IRazorDocumentClassifierPhase > ( )
153
- . ExecutePass < InheritsDirectivePass > ( ) ;
154
-
155
130
// Act
156
- runner . ExecutePass < ModelDirective . Pass > ( ) ;
131
+ processor . ExecutePass < ModelDirective . Pass > ( ) ;
157
132
158
- var documentNode = codeDocument . GetDocumentIntermediateNode ( ) ;
133
+ var documentNode = processor . GetDocumentNode ( ) ;
159
134
160
135
// Assert
161
136
var @class = documentNode . FindClassNode ( ) ;
@@ -173,21 +148,14 @@ @model Type1
173
148
public void ModelDirectivePass_Execute_ReplacesTModelInBaseType_DefaultDynamic ( )
174
149
{
175
150
// Arrange
176
- var projectEngine = CreateProjectEngine ( ) ;
177
-
178
- var codeDocument = projectEngine . CreateCodeDocument ( @"
151
+ var processor = CreateAndInitializeCodeDocument ( @"
179
152
@inherits BaseType<TModel>
180
153
" ) ;
181
154
182
- var runner = RazorProjectEngineRunner . From ( projectEngine , codeDocument ) ;
183
-
184
- runner . RunPhasesTo < IRazorDocumentClassifierPhase > ( )
185
- . ExecutePass < InheritsDirectivePass > ( ) ;
186
-
187
155
// Act
188
- runner . ExecutePass < ModelDirective . Pass > ( ) ;
156
+ processor . ExecutePass < ModelDirective . Pass > ( ) ;
189
157
190
- var documentNode = codeDocument . GetDocumentIntermediateNode ( ) ;
158
+ var documentNode = processor . GetDocumentNode ( ) ;
191
159
192
160
// Assert
193
161
var @class = documentNode . FindClassNode ( ) ;
@@ -206,20 +174,14 @@ @inherits BaseType<TModel>
206
174
public void ModelDirectivePass_DesignTime_AddsTModelUsingDirective ( )
207
175
{
208
176
// Arrange
209
- var projectEngine = CreateProjectEngine ( ) ;
210
- var codeDocument = projectEngine . CreateDesignTimeCodeDocument ( @"
177
+ var processor = CreateAndInitializeDesignTimeCodeDocument ( @"
211
178
@inherits BaseType<TModel>
212
179
" ) ;
213
180
214
- var runner = RazorProjectEngineRunner . From ( projectEngine , codeDocument ) ;
215
-
216
- runner . RunPhasesTo < IRazorDocumentClassifierPhase > ( )
217
- . ExecutePass < InheritsDirectivePass > ( ) ;
218
-
219
181
// Act
220
- runner . ExecutePass < ModelDirective . Pass > ( ) ;
182
+ processor . ExecutePass < ModelDirective . Pass > ( ) ;
221
183
222
- var documentNode = codeDocument . GetDocumentIntermediateNode ( ) ;
184
+ var documentNode = processor . GetDocumentNode ( ) ;
223
185
224
186
// Assert
225
187
var @class = documentNode . FindClassNode ( ) ;
@@ -243,21 +205,15 @@ @inherits BaseType<TModel>
243
205
public void ModelDirectivePass_DesignTime_WithModel_AddsTModelUsingDirective ( )
244
206
{
245
207
// Arrange
246
- var projectEngine = CreateProjectEngine ( ) ;
247
- var codeDocument = projectEngine . CreateDesignTimeCodeDocument ( @"
208
+ var processor = CreateAndInitializeDesignTimeCodeDocument ( @"
248
209
@inherits BaseType<TModel>
249
210
@model SomeType
250
211
" ) ;
251
212
252
- var runner = RazorProjectEngineRunner . From ( projectEngine , codeDocument ) ;
253
-
254
- runner . RunPhasesTo < IRazorDocumentClassifierPhase > ( )
255
- . ExecutePass < InheritsDirectivePass > ( ) ;
256
-
257
213
// Act
258
- runner . ExecutePass < ModelDirective . Pass > ( ) ;
214
+ processor . ExecutePass < ModelDirective . Pass > ( ) ;
259
215
260
- var documentNode = codeDocument . GetDocumentIntermediateNode ( ) ;
216
+ var documentNode = processor . GetDocumentNode ( ) ;
261
217
262
218
// Assert
263
219
var @class = documentNode . FindClassNode ( ) ;
0 commit comments