Skip to content

Commit 22ec9bd

Browse files
Refactor to share more test infrastructure
1 parent c6382d8 commit 22ec9bd

File tree

5 files changed

+98
-134
lines changed

5 files changed

+98
-134
lines changed

src/Compiler/Microsoft.AspNetCore.Mvc.Razor.Extensions/test/InjectDirectiveTest.cs

Lines changed: 20 additions & 44 deletions
Original file line numberDiff line numberDiff line change
@@ -21,23 +21,23 @@ protected override void ConfigureProjectEngine(RazorProjectEngineBuilder builder
2121
builder.Features.Add(new MvcViewDocumentClassifierPass());
2222
}
2323

24+
protected override void ConfigureProcessor(RazorCodeDocumentProcessor processor)
25+
{
26+
processor.RunPhasesTo<IRazorDocumentClassifierPhase>();
27+
}
28+
2429
[Fact]
2530
public void InjectDirectivePass_Execute_DefinesProperty()
2631
{
2732
// Arrange
28-
var projectEngine = CreateProjectEngine();
29-
30-
var codeDocument = projectEngine.CreateCodeDocument(@"
33+
var processor = CreateAndInitializeCodeDocument(@"
3134
@inject PropertyType PropertyName
3235
");
33-
var runner = RazorProjectEngineRunner.From(projectEngine, codeDocument);
34-
35-
runner.RunPhasesTo<IRazorDocumentClassifierPhase>();
3636

3737
// Act
38-
runner.ExecutePass<InjectDirective.Pass>();
38+
processor.ExecutePass<InjectDirective.Pass>();
3939

40-
var documentNode = codeDocument.GetDocumentIntermediateNode();
40+
var documentNode = processor.GetDocumentNode();
4141

4242
// Assert
4343
var @class = documentNode.FindClassNode();
@@ -53,21 +53,15 @@ @inject PropertyType PropertyName
5353
public void InjectDirectivePass_Execute_DedupesPropertiesByName()
5454
{
5555
// Arrange
56-
var projectEngine = CreateProjectEngine();
57-
58-
var codeDocument = projectEngine.CreateCodeDocument(@"
56+
var processor = CreateAndInitializeCodeDocument(@"
5957
@inject PropertyType PropertyName
6058
@inject PropertyType2 PropertyName
6159
");
6260

63-
var runner = RazorProjectEngineRunner.From(projectEngine, codeDocument);
64-
65-
runner.RunPhasesTo<IRazorDocumentClassifierPhase>();
66-
6761
// Act
68-
runner.ExecutePass<InjectDirective.Pass>();
62+
processor.ExecutePass<InjectDirective.Pass>();
6963

70-
var documentNode = codeDocument.GetDocumentIntermediateNode();
64+
var documentNode = processor.GetDocumentNode();
7165

7266
// Assert
7367
var @class = documentNode.FindClassNode();
@@ -83,20 +77,14 @@ @inject PropertyType2 PropertyName
8377
public void InjectDirectivePass_Execute_ExpandsTModel_WithDynamic()
8478
{
8579
// Arrange
86-
var projectEngine = CreateProjectEngine();
87-
88-
var codeDocument = projectEngine.CreateCodeDocument(@"
80+
var processor = CreateAndInitializeCodeDocument(@"
8981
@inject PropertyType<TModel> PropertyName
9082
");
9183

92-
var runner = RazorProjectEngineRunner.From(projectEngine, codeDocument);
93-
94-
runner.RunPhasesTo<IRazorDocumentClassifierPhase>();
95-
9684
// Act
97-
runner.ExecutePass<InjectDirective.Pass>();
85+
processor.ExecutePass<InjectDirective.Pass>();
9886

99-
var documentNode = codeDocument.GetDocumentIntermediateNode();
87+
var documentNode = processor.GetDocumentNode();
10088

10189
// Assert
10290
var @class = documentNode.FindClassNode();
@@ -112,21 +100,15 @@ @inject PropertyType<TModel> PropertyName
112100
public void InjectDirectivePass_Execute_ExpandsTModel_WithModelTypeFirst()
113101
{
114102
// Arrange
115-
var projectEngine = CreateProjectEngine();
116-
117-
var codeDocument = projectEngine.CreateCodeDocument(@"
103+
var processor = CreateAndInitializeCodeDocument(@"
118104
@model ModelType
119105
@inject PropertyType<TModel> PropertyName
120106
");
121107

122-
var runner = RazorProjectEngineRunner.From(projectEngine, codeDocument);
123-
124-
runner.RunPhasesTo<IRazorDocumentClassifierPhase>();
125-
126108
// Act
127-
runner.ExecutePass<InjectDirective.Pass>();
109+
processor.ExecutePass<InjectDirective.Pass>();
128110

129-
var documentNode = codeDocument.GetDocumentIntermediateNode();
111+
var documentNode = processor.GetDocumentNode();
130112

131113
// Assert
132114
var @class = documentNode.FindClassNode();
@@ -142,21 +124,15 @@ @inject PropertyType<TModel> PropertyName
142124
public void InjectDirectivePass_Execute_ExpandsTModel_WithModelType()
143125
{
144126
// Arrange
145-
var projectEngine = CreateProjectEngine();
146-
147-
var codeDocument = projectEngine.CreateCodeDocument(@"
127+
var processor = CreateAndInitializeCodeDocument(@"
148128
@inject PropertyType<TModel> PropertyName
149129
@model ModelType
150130
");
151131

152-
var runner = RazorProjectEngineRunner.From(projectEngine, codeDocument);
153-
154-
runner.RunPhasesTo<IRazorDocumentClassifierPhase>();
155-
156132
// Act
157-
runner.ExecutePass<InjectDirective.Pass>();
133+
processor.ExecutePass<InjectDirective.Pass>();
158134

159-
var documentNode = codeDocument.GetDocumentIntermediateNode();
135+
var documentNode = processor.GetDocumentNode();
160136

161137
// Assert
162138
var @class = documentNode.FindClassNode();

src/Compiler/Microsoft.AspNetCore.Mvc.Razor.Extensions/test/ModelDirectiveTest.cs

Lines changed: 30 additions & 74 deletions
Original file line numberDiff line numberDiff line change
@@ -21,24 +21,25 @@ protected override void ConfigureProjectEngine(RazorProjectEngineBuilder builder
2121
builder.Features.Add(new MvcViewDocumentClassifierPass());
2222
}
2323

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+
2432
[Fact]
2533
public void ModelDirective_GetModelType_GetsTypeFromFirstWellFormedDirective()
2634
{
2735
// Arrange
28-
var projectEngine = CreateProjectEngine();
29-
30-
var codeDocument = projectEngine.CreateCodeDocument(@"
36+
var processor = CreateAndInitializeCodeDocument(@"
3137
@model Type1
3238
@model Type2
3339
@model
3440
");
3541

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();
4243

4344
// Act
4445
var result = ModelDirective.GetModelType(documentNode);
@@ -51,14 +52,9 @@ @model Type2
5152
public void ModelDirective_GetModelType_DefaultsToDynamic()
5253
{
5354
// 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(@" ");
6056

61-
var documentNode = codeDocument.GetDocumentIntermediateNode();
57+
var documentNode = processor.GetDocumentNode();
6258

6359
// Act
6460
var result = ModelDirective.GetModelType(documentNode);
@@ -71,22 +67,15 @@ public void ModelDirective_GetModelType_DefaultsToDynamic()
7167
public void ModelDirectivePass_Execute_ReplacesTModelInBaseType()
7268
{
7369
// Arrange
74-
var projectEngine = CreateProjectEngine();
75-
76-
var codeDocument = projectEngine.CreateCodeDocument(@"
70+
var processor = CreateAndInitializeCodeDocument(@"
7771
@inherits BaseType<TModel>
7872
@model Type1
7973
");
8074

81-
var runner = RazorProjectEngineRunner.From(projectEngine, codeDocument);
82-
83-
runner.RunPhasesTo<IRazorDocumentClassifierPhase>()
84-
.ExecutePass<InheritsDirectivePass>();
85-
8675
// Act
87-
runner.ExecutePass<ModelDirective.Pass>();
76+
processor.ExecutePass<ModelDirective.Pass>();
8877

89-
var documentNode = codeDocument.GetDocumentIntermediateNode();
78+
var documentNode = processor.GetDocumentNode();
9079

9180
// Assert
9281
var @class = documentNode.FindClassNode();
@@ -105,23 +94,16 @@ @model Type1
10594
public void ModelDirectivePass_Execute_ReplacesTModelInBaseType_DifferentOrdering()
10695
{
10796
// Arrange
108-
var projectEngine = CreateProjectEngine();
109-
110-
var codeDocument = projectEngine.CreateCodeDocument(@"
97+
var processor = CreateAndInitializeCodeDocument(@"
11198
@model Type1
11299
@inherits BaseType<TModel>
113100
@model Type2
114101
");
115102

116-
var runner = RazorProjectEngineRunner.From(projectEngine, codeDocument);
117-
118-
runner.RunPhasesTo<IRazorDocumentClassifierPhase>()
119-
.ExecutePass<InheritsDirectivePass>();
120-
121103
// Act
122-
runner.ExecutePass<ModelDirective.Pass>();
104+
processor.ExecutePass<ModelDirective.Pass>();
123105

124-
var documentNode = codeDocument.GetDocumentIntermediateNode();
106+
var documentNode = processor.GetDocumentNode();
125107

126108
// Assert
127109
var @class = documentNode.FindClassNode();
@@ -140,22 +122,15 @@ @model Type2
140122
public void ModelDirectivePass_Execute_NoOpWithoutTModel()
141123
{
142124
// Arrange
143-
var projectEngine = CreateProjectEngine();
144-
145-
var codeDocument = projectEngine.CreateCodeDocument(@"
125+
var processor = CreateAndInitializeCodeDocument(@"
146126
@inherits BaseType
147127
@model Type1
148128
");
149129

150-
var runner = RazorProjectEngineRunner.From(projectEngine, codeDocument);
151-
152-
runner.RunPhasesTo<IRazorDocumentClassifierPhase>()
153-
.ExecutePass<InheritsDirectivePass>();
154-
155130
// Act
156-
runner.ExecutePass<ModelDirective.Pass>();
131+
processor.ExecutePass<ModelDirective.Pass>();
157132

158-
var documentNode = codeDocument.GetDocumentIntermediateNode();
133+
var documentNode = processor.GetDocumentNode();
159134

160135
// Assert
161136
var @class = documentNode.FindClassNode();
@@ -173,21 +148,14 @@ @model Type1
173148
public void ModelDirectivePass_Execute_ReplacesTModelInBaseType_DefaultDynamic()
174149
{
175150
// Arrange
176-
var projectEngine = CreateProjectEngine();
177-
178-
var codeDocument = projectEngine.CreateCodeDocument(@"
151+
var processor = CreateAndInitializeCodeDocument(@"
179152
@inherits BaseType<TModel>
180153
");
181154

182-
var runner = RazorProjectEngineRunner.From(projectEngine, codeDocument);
183-
184-
runner.RunPhasesTo<IRazorDocumentClassifierPhase>()
185-
.ExecutePass<InheritsDirectivePass>();
186-
187155
// Act
188-
runner.ExecutePass<ModelDirective.Pass>();
156+
processor.ExecutePass<ModelDirective.Pass>();
189157

190-
var documentNode = codeDocument.GetDocumentIntermediateNode();
158+
var documentNode = processor.GetDocumentNode();
191159

192160
// Assert
193161
var @class = documentNode.FindClassNode();
@@ -206,20 +174,14 @@ @inherits BaseType<TModel>
206174
public void ModelDirectivePass_DesignTime_AddsTModelUsingDirective()
207175
{
208176
// Arrange
209-
var projectEngine = CreateProjectEngine();
210-
var codeDocument = projectEngine.CreateDesignTimeCodeDocument(@"
177+
var processor = CreateAndInitializeDesignTimeCodeDocument(@"
211178
@inherits BaseType<TModel>
212179
");
213180

214-
var runner = RazorProjectEngineRunner.From(projectEngine, codeDocument);
215-
216-
runner.RunPhasesTo<IRazorDocumentClassifierPhase>()
217-
.ExecutePass<InheritsDirectivePass>();
218-
219181
// Act
220-
runner.ExecutePass<ModelDirective.Pass>();
182+
processor.ExecutePass<ModelDirective.Pass>();
221183

222-
var documentNode = codeDocument.GetDocumentIntermediateNode();
184+
var documentNode = processor.GetDocumentNode();
223185

224186
// Assert
225187
var @class = documentNode.FindClassNode();
@@ -243,21 +205,15 @@ @inherits BaseType<TModel>
243205
public void ModelDirectivePass_DesignTime_WithModel_AddsTModelUsingDirective()
244206
{
245207
// Arrange
246-
var projectEngine = CreateProjectEngine();
247-
var codeDocument = projectEngine.CreateDesignTimeCodeDocument(@"
208+
var processor = CreateAndInitializeDesignTimeCodeDocument(@"
248209
@inherits BaseType<TModel>
249210
@model SomeType
250211
");
251212

252-
var runner = RazorProjectEngineRunner.From(projectEngine, codeDocument);
253-
254-
runner.RunPhasesTo<IRazorDocumentClassifierPhase>()
255-
.ExecutePass<InheritsDirectivePass>();
256-
257213
// Act
258-
runner.ExecutePass<ModelDirective.Pass>();
214+
processor.ExecutePass<ModelDirective.Pass>();
259215

260-
var documentNode = codeDocument.GetDocumentIntermediateNode();
216+
var documentNode = processor.GetDocumentNode();
261217

262218
// Assert
263219
var @class = documentNode.FindClassNode();

src/Compiler/Microsoft.AspNetCore.Razor.Language/test/Extensions/InheritsDirectivePassTest.cs

Lines changed: 7 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -15,15 +15,13 @@ public class InheritsDirectivePassTest : RazorProjectEngineTestBase
1515
public void Execute_SkipsDocumentWithNoClassNode()
1616
{
1717
// Arrange
18-
var projectEngine = CreateProjectEngine();
19-
var codeDocument = projectEngine.CreateCodeDocument("@inherits Hello<World[]>");
20-
var runner = RazorProjectEngineRunner.From(projectEngine, codeDocument);
18+
var processor = CreateAndInitializeCodeDocument("@inherits Hello<World[]>");
2119

2220
var documentNode = new DocumentIntermediateNode();
23-
documentNode.Children.Add(new DirectiveIntermediateNode() { Directive = FunctionsDirective.Directive, });
21+
documentNode.Children.Add(new DirectiveIntermediateNode() { Directive = FunctionsDirective.Directive });
2422

2523
// Act
26-
runner.ExecutePass<InheritsDirectivePass>(documentNode);
24+
processor.ExecutePass<InheritsDirectivePass>(documentNode);
2725

2826
// Assert
2927
Children(
@@ -35,16 +33,14 @@ public void Execute_SkipsDocumentWithNoClassNode()
3533
public void Execute_Inherits_SetsClassDeclarationBaseType()
3634
{
3735
// Arrange
38-
var projectEngine = CreateProjectEngine();
39-
var codeDocument = projectEngine.CreateCodeDocument("@inherits Hello<World[]>");
40-
var runner = RazorProjectEngineRunner.From(projectEngine, codeDocument);
36+
var processor = CreateAndInitializeCodeDocument("@inherits Hello<World[]>");
4137

42-
runner.RunPhasesTo<IRazorDocumentClassifierPhase>();
38+
processor.RunPhasesTo<IRazorDocumentClassifierPhase>();
4339

4440
// Act
45-
runner.ExecutePass<InheritsDirectivePass>();
41+
processor.ExecutePass<InheritsDirectivePass>();
4642

47-
var documentNode = codeDocument.GetDocumentIntermediateNode();
43+
var documentNode = processor.GetDocumentNode();
4844

4945
// Assert
5046
Children(

0 commit comments

Comments
 (0)