aspnetcore/test/Microsoft.AspNetCore.Razor..../RazorEngineTest.cs

92 lines
2.8 KiB
C#

// Copyright (c) .NET Foundation. All rights reserved.
// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
using System.Collections.Generic;
using System.Linq;
using Microsoft.AspNetCore.Razor.Evolution;
using Moq;
using Xunit;
namespace Microsoft.AspNetCore.Razor.Evolution
{
public class RazorEngineTest
{
[Fact]
public void Create_NoArg_CreatesDefaultEngine()
{
// Arrange
// Act
var engine = RazorEngine.Create();
// Assert
Assert.IsType<DefaultRazorEngine>(engine);
AssertDefaultFeatures(engine.Features);
AssertDefaultPhases(engine.Phases);
}
[Fact]
public void Create_Null_CreatesDefaultEngine()
{
// Arrange
// Act
var engine = RazorEngine.Create(configure: null);
// Assert
Assert.IsType<DefaultRazorEngine>(engine);
AssertDefaultFeatures(engine.Features);
AssertDefaultPhases(engine.Phases);
}
[Fact]
public void Create_Lambda_AddsFeaturesAndPhases()
{
// Arrange
IRazorEngineFeature[] features = null;
IRazorEnginePhase[] phases = null;
// Act
var engine = RazorEngine.Create(builder =>
{
builder.Features.Clear();
builder.Phases.Clear();
builder.Features.Add(Mock.Of<IRazorEngineFeature>());
builder.Features.Add(Mock.Of<IRazorEngineFeature>());
builder.Phases.Add(Mock.Of<IRazorEnginePhase>());
builder.Phases.Add(Mock.Of<IRazorEnginePhase>());
features = builder.Features.ToArray();
phases = builder.Phases.ToArray();
});
// Assert
Assert.Collection(
engine.Features,
f => Assert.Same(features[0], f),
f => Assert.Same(features[1], f));
Assert.Collection(
engine.Phases,
p => Assert.Same(phases[0], p),
p => Assert.Same(phases[1], p));
}
private static void AssertDefaultFeatures(IEnumerable<IRazorEngineFeature> features)
{
Assert.Collection(
features,
feature => Assert.IsType<TagHelperBinderSyntaxTreePass>(feature));
}
private static void AssertDefaultPhases(IReadOnlyList<IRazorEnginePhase> phases)
{
Assert.Collection(
phases,
phase => Assert.IsType<DefaultRazorParsingPhase>(phase),
phase => Assert.IsType<DefaultRazorSyntaxTreePhase>(phase),
phase => Assert.IsType<DefaultRazorIRLoweringPhase>(phase));
}
}
}