File: StaticWebAssets\DiscoverDefaultScopedCssItemsTests.cs
Web Access
Project: ..\..\..\test\Microsoft.NET.Sdk.StaticWebAssets.Tests\Microsoft.NET.Sdk.StaticWebAssets.Tests.csproj (Microsoft.NET.Sdk.StaticWebAssets.Tests)
// Licensed to the .NET Foundation under one or more agreements.
// The .NET Foundation licenses this file to you under the MIT license.
 
using Microsoft.AspNetCore.StaticWebAssets.Tasks;
using Microsoft.Build.Utilities;
 
namespace Microsoft.NET.Sdk.Razor.Test
{
    public class DiscoverDefaultScopedCssItemsTests
    {
        [Fact]
        public void DiscoversScopedCssFiles_BasedOnTheirExtension()
        {
            // Arrange
            var taskInstance = new DiscoverDefaultScopedCssItems()
            {
                Content = new[]
                {
                    new TaskItem("TestFiles/Pages/Counter.razor.css"),
                    new TaskItem("TestFiles/Pages/Index.razor.css"),
                    new TaskItem("TestFiles/Pages/Profile.razor.css"),
                }
            };
 
            // Act
            var result = taskInstance.Execute();
 
            // Assert
            result.Should().BeTrue();
            taskInstance.DiscoveredScopedCssInputs.Should().HaveCount(3);
        }
 
        [Fact]
        public void DoesNotDiscoversScopedCssFilesForViews_IfFeatureIsUnsupported()
        {
            // Arrange
            var taskInstance = new DiscoverDefaultScopedCssItems()
            {
                Content = new[]
                {
                    new TaskItem("TestFiles/Pages/Counter.cshtml.css"),
                    new TaskItem("TestFiles/Pages/Index.cshtml.css"),
                    new TaskItem("TestFiles/Pages/Profile.cshtml.css"),
                }
            };
 
            // Act
            var result = taskInstance.Execute();
 
            // Assert
            result.Should().BeTrue();
            taskInstance.DiscoveredScopedCssInputs.Should().BeEmpty();
        }
 
        [Fact]
        public void DiscoversScopedCssFilesForViews_BasedOnTheirExtension()
        {
            // Arrange
            var taskInstance = new DiscoverDefaultScopedCssItems()
            {
                SupportsScopedCshtmlCss = true,
                Content = new[]
                {
                    new TaskItem("TestFiles/Pages/Counter.cshtml.css"),
                    new TaskItem("TestFiles/Pages/Index.cshtml.css"),
                    new TaskItem("TestFiles/Pages/Profile.cshtml.css"),
                }
            };
 
            // Act
            var result = taskInstance.Execute();
 
            // Assert
            result.Should().BeTrue();
            taskInstance.DiscoveredScopedCssInputs.Should().HaveCount(3);
        }
 
        [Fact]
        public void DiscoversScopedCssFilesForViews_SkipsFilesWithScopedAttributeWithAFalseValue()
        {
            // Arrange
            var taskInstance = new DiscoverDefaultScopedCssItems()
            {
                SupportsScopedCshtmlCss = true,
                Content = new[]
                {
                    new TaskItem("TestFiles/Pages/Counter.cshtml.css"),
                    new TaskItem("TestFiles/Pages/Index.cshtml.css"),
                    new TaskItem("TestFiles/Pages/Profile.cshtml.css", new Dictionary<string,string>{ ["Scoped"] = "false" }),
                }
            };
 
            // Act
            var result = taskInstance.Execute();
 
            // Assert
            result.Should().BeTrue();
            taskInstance.DiscoveredScopedCssInputs.Should().HaveCount(2);
        }
    }
}