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 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);
        }