// 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.Language.Extensions; using Moq; using Xunit; namespace Microsoft.AspNetCore.Razor.Language.Test { public class RazorProjectEngineTest { [Fact] public void CreateDesignTime_Lambda_AddsFeaturesAndPhases() { // Arrange // Act var engine = RazorProjectEngine.Create(RazorConfiguration.Default, Mock.Of()); // Assert AssertDefaultPhases(engine); AssertDefaultFeatures(engine); AssertDefaultDirectives(engine); AssertDefaultTargetExtensions(engine); } private static void AssertDefaultPhases(RazorProjectEngine engine) { Assert.Collection( engine.Phases, phase => Assert.IsType(phase), phase => Assert.IsType(phase), phase => Assert.IsType(phase), phase => Assert.IsType(phase), phase => Assert.IsType(phase), phase => Assert.IsType(phase), phase => Assert.IsType(phase), phase => Assert.IsType(phase)); } private static void AssertDefaultFeatures(RazorProjectEngine engine) { var features = engine.EngineFeatures.OrderBy(f => f.GetType().Name).ToArray(); Assert.Collection( features, feature => Assert.IsType(feature), feature => Assert.IsType(feature), feature => Assert.IsType(feature), feature => Assert.IsType(feature), feature => Assert.IsType(feature), feature => Assert.IsType(feature), feature => Assert.IsType(feature), feature => Assert.IsType(feature), feature => Assert.IsType(feature), feature => Assert.IsType(feature), feature => Assert.IsType(feature), feature => Assert.IsType(feature), feature => Assert.IsType(feature), feature => Assert.IsType(feature)); } private static void AssertDefaultDirectives(RazorProjectEngine engine) { var feature = engine.EngineFeatures.OfType().FirstOrDefault(); Assert.NotNull(feature); Assert.Empty(feature.Directives); } private static void AssertDefaultTargetExtensions(RazorProjectEngine engine) { var feature = engine.EngineFeatures.OfType().FirstOrDefault(); Assert.NotNull(feature); var extensions = feature.TargetExtensions.OrderBy(f => f.GetType().Name).ToArray(); Assert.Collection( extensions, extension => Assert.IsType(extension), extension => Assert.IsType(extension), extension => Assert.IsType(extension), extension => Assert.IsType(extension)); } } }