File: VirtualPathDataTests.cs
Web Access
Project: src\src\Http\Routing.Abstractions\test\Microsoft.AspNetCore.Mvc.Routing.Abstractions.Tests.csproj (Microsoft.AspNetCore.Mvc.Routing.Abstractions.Tests)
// Licensed to the .NET Foundation under one or more agreements.
// The .NET Foundation licenses this file to you under the MIT license.
 
using Moq;
 
namespace Microsoft.AspNetCore.Routing;
 
public class VirtualPathDataTests
{
    [Fact]
    public void Constructor_CreatesEmptyDataTokensIfNull()
    {
        // Arrange
        var router = Mock.Of<IRouter>();
        var path = "/virtual path";
 
        // Act
        var pathData = new VirtualPathData(router, path, null);
 
        // Assert
        Assert.Same(router, pathData.Router);
        Assert.Equal(path, pathData.VirtualPath);
        Assert.NotNull(pathData.DataTokens);
        Assert.Empty(pathData.DataTokens);
    }
 
    [Fact]
    public void Constructor_CopiesDataTokens()
    {
        // Arrange
        var router = Mock.Of<IRouter>();
        var path = "/virtual path";
        var dataTokens = new RouteValueDictionary();
        dataTokens["TestKey"] = "TestValue";
 
        // Act
        var pathData = new VirtualPathData(router, path, dataTokens);
 
        // Assert
        Assert.Same(router, pathData.Router);
        Assert.Equal(path, pathData.VirtualPath);
        Assert.NotNull(pathData.DataTokens);
        Assert.Equal("TestValue", pathData.DataTokens["TestKey"]);
        Assert.Single(pathData.DataTokens);
        Assert.NotSame(dataTokens, pathData.DataTokens);
    }
 
    [Fact]
    public void VirtualPath_ReturnsEmptyStringIfNull()
    {
        // Arrange
        var router = Mock.Of<IRouter>();
 
        // Act
        var pathData = new VirtualPathData(router, virtualPath: null);
 
        // Assert
        Assert.Same(router, pathData.Router);
        Assert.Empty(pathData.VirtualPath);
        Assert.NotNull(pathData.DataTokens);
        Assert.Empty(pathData.DataTokens);
    }
}