Пример #1
0
    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);
    }
Пример #3
0
    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);
    }