public static RazorProjectEngine Create( RazorConfiguration configuration, RazorProjectFileSystem fileSystem, Action <RazorProjectEngineBuilder> configure) { if (fileSystem == null) { throw new ArgumentNullException(nameof(fileSystem)); } if (configuration == null) { throw new ArgumentNullException(nameof(configuration)); } var builder = new DefaultRazorProjectEngineBuilder(configuration, fileSystem); // The intialization order is somewhat important. // // Defaults -> Extensions -> Additional customization // // This allows extensions to rely on default features, and customizations to override choices made by // extensions. AddDefaultPhases(builder.Phases); AddDefaultsFeatures(builder.Features); LoadExtensions(builder, configuration.Extensions); configure?.Invoke(builder); return(builder.Build()); }
public static RazorProjectEngine Create( RazorProjectFileSystem fileSystem, RazorConfiguration configuration, Action <RazorProjectEngineBuilder> configure) { if (fileSystem == null) { throw new ArgumentNullException(nameof(fileSystem)); } if (configuration == null) { throw new ArgumentNullException(nameof(configuration)); } var builder = new DefaultRazorProjectEngineBuilder(configuration, fileSystem); AddDefaults(builder); if (configuration.DesignTime) { AddDesignTimeDefaults(builder); } else { AddRuntimeDefaults(builder); } configure?.Invoke(builder); return(builder.Build()); }
internal static RazorProjectEngine CreateEmpty(Action <RazorProjectEngineBuilder> configure = null) { var builder = new DefaultRazorProjectEngineBuilder(RazorConfiguration.Default, RazorProjectFileSystem.Empty); configure?.Invoke(builder); return(builder.Build()); }
public void Build_CreatesProjectEngineWithFileSystem() { // Arrange var fileSystem = Mock.Of <RazorProjectFileSystem>(); var builder = new DefaultRazorProjectEngineBuilder(RazorConfiguration.Default, fileSystem); // Act var projectEngine = builder.Build(); // Assert Assert.Same(fileSystem, projectEngine.FileSystem); }
public static RazorProjectEngine Create( RazorConfiguration configuration, RazorProjectFileSystem fileSystem, Action <RazorProjectEngineBuilder> configure) { if (fileSystem == null) { throw new ArgumentNullException(nameof(fileSystem)); } if (configuration == null) { throw new ArgumentNullException(nameof(configuration)); } var builder = new DefaultRazorProjectEngineBuilder(configuration, fileSystem); // The intialization order is somewhat important. // // Defaults -> Extensions -> Additional customization // // This allows extensions to rely on default features, and customizations to override choices made by // extensions. AddDefaultPhases(builder.Phases); AddDefaultFeatures(builder.Features); if (configuration.LanguageVersion.CompareTo(RazorLanguageVersion.Version_5_0) >= 0) { builder.Features.Add(new ViewCssScopePass()); } if (configuration.LanguageVersion.CompareTo(RazorLanguageVersion.Version_3_0) >= 0) { FunctionsDirective.Register(builder); ImplementsDirective.Register(builder); InheritsDirective.Register(builder); NamespaceDirective.Register(builder); AttributeDirective.Register(builder); AddComponentFeatures(builder, configuration.LanguageVersion); } LoadExtensions(builder, configuration.Extensions); configure?.Invoke(builder); return(builder.Build()); }
public void AddDirective_CreatesAndAddsToDirectiveFeatureIfItDoesNotExist() { // Arrange var builder = new DefaultRazorProjectEngineBuilder(RazorConfiguration.Default, Mock.Of <RazorProjectFileSystem>()); var expectedDirective = Mock.Of <DirectiveDescriptor>(); // Act builder.AddDirective(expectedDirective); // Assert var feature = Assert.Single(builder.Features); var directiveFeature = Assert.IsAssignableFrom <IRazorDirectiveFeature>(feature); var directive = Assert.Single(directiveFeature.Directives); Assert.Same(expectedDirective, directive); }
public void AddTargetExtension_CreatesAndAddsToTargetExtensionFeatureIfItDoesNotExist() { // Arrange var builder = new DefaultRazorProjectEngineBuilder(RazorConfiguration.Default, Mock.Of <RazorProjectFileSystem>()); var expectedExtension = Mock.Of <ICodeTargetExtension>(); // Act builder.AddTargetExtension(expectedExtension); // Assert var feature = Assert.Single(builder.Features); var codeTargetExtensionFeature = Assert.IsAssignableFrom <IRazorTargetExtensionFeature>(feature); var extensions = Assert.Single(codeTargetExtensionFeature.TargetExtensions); Assert.Same(expectedExtension, extensions); }
public void Build_AddsPhasesToRazorEngine() { // Arrange var builder = new DefaultRazorProjectEngineBuilder(RazorConfiguration.Default, Mock.Of <RazorProjectFileSystem>()); builder.Phases.Add(Mock.Of <IRazorEnginePhase>()); builder.Phases.Add(Mock.Of <IRazorEnginePhase>()); var phases = builder.Phases.ToArray(); // Act var projectEngine = builder.Build(); // Assert Assert.Collection(projectEngine.Engine.Phases, phase => Assert.Same(phases[0], phase), phase => Assert.Same(phases[1], phase)); }
public void SetImportFeature_SetsTheImportFeature() { // Arrange var builder = new DefaultRazorProjectEngineBuilder(RazorConfiguration.Default, Mock.Of <RazorProjectFileSystem>()); var testFeature1 = Mock.Of <IImportProjectFeature>(); var testFeature2 = Mock.Of <IImportProjectFeature>(); builder.Features.Add(testFeature1); builder.Features.Add(testFeature2); var newFeature = Mock.Of <IImportProjectFeature>(); // Act builder.SetImportFeature(newFeature); // Assert var feature = Assert.Single(builder.Features); Assert.Same(newFeature, feature); }
public void AddDirective_UsesExistingFeatureIfExistsAndAddsTo() { // Arrange var builder = new DefaultRazorProjectEngineBuilder(RazorConfiguration.Default, Mock.Of <RazorProjectFileSystem>()); var directiveFeature = new DefaultRazorDirectiveFeature(); builder.Features.Add(directiveFeature); var expecteDirective = Mock.Of <DirectiveDescriptor>(); // Act builder.AddDirective(expecteDirective); // Assert var feature = Assert.Single(builder.Features); Assert.Same(directiveFeature, feature); var directive = Assert.Single(directiveFeature.Directives); Assert.Same(expecteDirective, directive); }
public void AddTargetExtension_UsesExistingFeatureIfExistsAndAddsTo() { // Arrange var builder = new DefaultRazorProjectEngineBuilder(RazorConfiguration.Default, Mock.Of <RazorProjectFileSystem>()); var codeTargetExtensionFeature = new DefaultRazorTargetExtensionFeature(); builder.Features.Add(codeTargetExtensionFeature); var expectedExtension = Mock.Of <ICodeTargetExtension>(); // Act builder.AddTargetExtension(expectedExtension); // Assert var feature = Assert.Single(builder.Features); Assert.Same(codeTargetExtensionFeature, feature); var extensions = Assert.Single(codeTargetExtensionFeature.TargetExtensions); Assert.Same(expectedExtension, extensions); }