86 lines
3.4 KiB
C#
86 lines
3.4 KiB
C#
using System.Collections.Generic;
|
|
using Microsoft.AspNet.Abstractions;
|
|
using Microsoft.AspNet.DependencyInjection;
|
|
using Microsoft.AspNet.Routing;
|
|
using Moq;
|
|
using Xunit;
|
|
|
|
namespace Microsoft.AspNet.Mvc.Core.Test
|
|
{
|
|
public class UrlHelperTest
|
|
{
|
|
[Theory]
|
|
[InlineData("", "/Home/About", "/Home/About")]
|
|
[InlineData("/myapproot", "/test", "/test")]
|
|
public void Content_ReturnsContentPath_WhenItDoesNotStartWithToken(string appRoot,
|
|
string contentPath,
|
|
string expectedPath)
|
|
{
|
|
// Arrange
|
|
var context = CreateHttpContext(appRoot);
|
|
var contextAccessor = CreateActionContext(context);
|
|
var urlHelper = CreateUrlHelper(contextAccessor);
|
|
|
|
// Act
|
|
var path = urlHelper.Content(contentPath);
|
|
|
|
// Assert
|
|
Assert.Equal(expectedPath, path);
|
|
}
|
|
|
|
[Theory]
|
|
[InlineData(null, "~/Home/About", "/Home/About")]
|
|
[InlineData("/", "~/Home/About", "/Home/About")]
|
|
[InlineData("/", "~/", "/")]
|
|
[InlineData("", "~/Home/About", "/Home/About")]
|
|
[InlineData("/myapproot", "~/", "/myapproot/")]
|
|
[InlineData("", "~/Home/About", "/Home/About")]
|
|
[InlineData("/myapproot", "~/", "/myapproot/")]
|
|
public void Content_ReturnsAppRelativePath_WhenItStartsWithToken(string appRoot,
|
|
string contentPath,
|
|
string expectedPath)
|
|
{
|
|
// Arrange
|
|
var context = CreateHttpContext(appRoot);
|
|
var contextAccessor = CreateActionContext(context);
|
|
var urlHelper = CreateUrlHelper(contextAccessor);
|
|
|
|
// Act
|
|
var path = urlHelper.Content(contentPath);
|
|
|
|
// Assert
|
|
Assert.Equal(expectedPath, path);
|
|
}
|
|
|
|
private static HttpContext CreateHttpContext(string appRoot)
|
|
{
|
|
var appRootPath = new PathString(appRoot);
|
|
var request = new Mock<HttpRequest>();
|
|
request.SetupGet(r => r.PathBase)
|
|
.Returns(appRootPath);
|
|
var context = new Mock<HttpContext>();
|
|
context.SetupGet(c => c.Request)
|
|
.Returns(request.Object);
|
|
return context.Object;
|
|
}
|
|
|
|
private static IContextAccessor<ActionContext> CreateActionContext(HttpContext context)
|
|
{
|
|
var actionContext = new ActionContext(context,
|
|
Mock.Of<IRouter>(),
|
|
new Dictionary<string, object>(),
|
|
new ActionDescriptor());
|
|
var contextAccessor = new Mock<IContextAccessor<ActionContext>>();
|
|
contextAccessor.SetupGet(c => c.Value)
|
|
.Returns(actionContext);
|
|
return contextAccessor.Object;
|
|
}
|
|
|
|
private static UrlHelper CreateUrlHelper(IContextAccessor<ActionContext> contextAccessor)
|
|
{
|
|
var actionSelector = new Mock<IActionSelector>(MockBehavior.Strict);
|
|
return new UrlHelper(contextAccessor, actionSelector.Object);
|
|
}
|
|
}
|
|
}
|