Fixing tests
This commit is contained in:
@@ -1,5 +1,9 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Reflection;
|
||||
using Microsoft.AspNetCore.Http;
|
||||
using Microsoft.AspNetCore.Mvc.Abstractions;
|
||||
using Microsoft.AspNetCore.Mvc.Controllers;
|
||||
using Microsoft.AspNetCore.Mvc.Infrastructure;
|
||||
using Microsoft.AspNetCore.Routing;
|
||||
using Microsoft.Extensions.Logging.Abstractions;
|
||||
@@ -10,6 +14,8 @@ using Umbraco.Core.Models;
|
||||
using Umbraco.Core.Models.PublishedContent;
|
||||
using Umbraco.Core.Services;
|
||||
using Umbraco.Core.Strings;
|
||||
using Umbraco.Extensions;
|
||||
using Umbraco.Web.Common.Controllers;
|
||||
using Umbraco.Web.Common.Routing;
|
||||
using Umbraco.Web.Features;
|
||||
using Umbraco.Web.Routing;
|
||||
@@ -22,11 +28,14 @@ namespace Umbraco.Tests.UnitTests.Umbraco.Web.Website.Routing
|
||||
[TestFixture]
|
||||
public class UmbracoRouteValuesFactoryTests
|
||||
{
|
||||
private UmbracoRouteValuesFactory GetFactory(out Mock<IPublishedRouter> publishedRouter, out UmbracoRenderingDefaults renderingDefaults)
|
||||
private UmbracoRouteValuesFactory GetFactory(
|
||||
out Mock<IPublishedRouter> publishedRouter,
|
||||
out UmbracoRenderingDefaults renderingDefaults,
|
||||
out IPublishedRequest request)
|
||||
{
|
||||
var builder = new PublishedRequestBuilder(new Uri("https://example.com"), Mock.Of<IFileService>());
|
||||
builder.SetPublishedContent(Mock.Of<IPublishedContent>());
|
||||
IPublishedRequest request = builder.Build();
|
||||
request = builder.Build();
|
||||
|
||||
publishedRouter = new Mock<IPublishedRouter>();
|
||||
publishedRouter.Setup(x => x.UpdateRequestToNotFound(It.IsAny<IPublishedRequest>()))
|
||||
@@ -35,13 +44,26 @@ namespace Umbraco.Tests.UnitTests.Umbraco.Web.Website.Routing
|
||||
|
||||
renderingDefaults = new UmbracoRenderingDefaults();
|
||||
|
||||
// add the default one
|
||||
var actionDescriptors = new List<ActionDescriptor>
|
||||
{
|
||||
new ControllerActionDescriptor
|
||||
{
|
||||
ControllerName = ControllerExtensions.GetControllerName<RenderController>(),
|
||||
ActionName = nameof(RenderController.Index),
|
||||
ControllerTypeInfo = typeof(RenderController).GetTypeInfo()
|
||||
}
|
||||
};
|
||||
var actionSelector = new Mock<IActionSelector>();
|
||||
actionSelector.Setup(x => x.SelectCandidates(It.IsAny<RouteContext>())).Returns(actionDescriptors);
|
||||
|
||||
var factory = new UmbracoRouteValuesFactory(
|
||||
renderingDefaults,
|
||||
Mock.Of<IShortStringHelper>(),
|
||||
new UmbracoFeatures(),
|
||||
new ControllerActionSearcher(
|
||||
new NullLogger<ControllerActionSearcher>(),
|
||||
Mock.Of<IActionSelector>()),
|
||||
actionSelector.Object),
|
||||
publishedRouter.Object);
|
||||
|
||||
return factory;
|
||||
@@ -50,11 +72,7 @@ namespace Umbraco.Tests.UnitTests.Umbraco.Web.Website.Routing
|
||||
[Test]
|
||||
public void Update_Request_To_Not_Found_When_No_Template()
|
||||
{
|
||||
var builder = new PublishedRequestBuilder(new Uri("https://example.com"), Mock.Of<IFileService>());
|
||||
builder.SetPublishedContent(Mock.Of<IPublishedContent>());
|
||||
IPublishedRequest request = builder.Build();
|
||||
|
||||
UmbracoRouteValuesFactory factory = GetFactory(out Mock<IPublishedRouter> publishedRouter, out _);
|
||||
UmbracoRouteValuesFactory factory = GetFactory(out Mock<IPublishedRouter> publishedRouter, out _, out IPublishedRequest request);
|
||||
|
||||
UmbracoRouteValues result = factory.Create(new DefaultHttpContext(), request);
|
||||
|
||||
@@ -65,14 +83,8 @@ namespace Umbraco.Tests.UnitTests.Umbraco.Web.Website.Routing
|
||||
[Test]
|
||||
public void Adds_Result_To_Route_Value_Dictionary()
|
||||
{
|
||||
var builder = new PublishedRequestBuilder(new Uri("https://example.com"), Mock.Of<IFileService>());
|
||||
builder.SetPublishedContent(Mock.Of<IPublishedContent>());
|
||||
builder.SetTemplate(Mock.Of<ITemplate>());
|
||||
IPublishedRequest request = builder.Build();
|
||||
UmbracoRouteValuesFactory factory = GetFactory(out _, out UmbracoRenderingDefaults renderingDefaults, out IPublishedRequest request);
|
||||
|
||||
UmbracoRouteValuesFactory factory = GetFactory(out _, out UmbracoRenderingDefaults renderingDefaults);
|
||||
|
||||
var routeVals = new RouteValueDictionary();
|
||||
UmbracoRouteValues result = factory.Create(new DefaultHttpContext(), request);
|
||||
|
||||
Assert.IsNotNull(result);
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
using System;
|
||||
using System;
|
||||
using System.Threading.Tasks;
|
||||
using Microsoft.AspNetCore.Mvc;
|
||||
using Microsoft.AspNetCore.Mvc.ViewFeatures;
|
||||
@@ -14,27 +14,24 @@ namespace Umbraco.Web.Website.ActionResults
|
||||
/// to the current page but the current page is actually a rewritten URL normally done with something like
|
||||
/// Server.Transfer. It is also handy if you want to persist the query strings.
|
||||
/// </remarks>
|
||||
public class RedirectToUmbracoUrlResult : IActionResult
|
||||
public class RedirectToUmbracoUrlResult : IActionResult, IKeepTempDataResult
|
||||
{
|
||||
private readonly IUmbracoContext _umbracoContext;
|
||||
|
||||
/// <summary>
|
||||
/// Creates a new RedirectToUmbracoResult
|
||||
/// Initializes a new instance of the <see cref="RedirectToUmbracoUrlResult"/> class.
|
||||
/// </summary>
|
||||
/// <param name="umbracoContext"></param>
|
||||
public RedirectToUmbracoUrlResult(IUmbracoContext umbracoContext)
|
||||
{
|
||||
_umbracoContext = umbracoContext;
|
||||
}
|
||||
public RedirectToUmbracoUrlResult(IUmbracoContext umbracoContext) => _umbracoContext = umbracoContext;
|
||||
|
||||
/// <inheritdoc/>
|
||||
public Task ExecuteResultAsync(ActionContext context)
|
||||
{
|
||||
if (context is null) throw new ArgumentNullException(nameof(context));
|
||||
if (context is null)
|
||||
{
|
||||
throw new ArgumentNullException(nameof(context));
|
||||
}
|
||||
|
||||
var destinationUrl = _umbracoContext.OriginalRequestUrl.PathAndQuery;
|
||||
var tempDataDictionaryFactory = context.HttpContext.RequestServices.GetRequiredService<ITempDataDictionaryFactory>();
|
||||
var tempData = tempDataDictionaryFactory.GetTempData(context.HttpContext);
|
||||
tempData?.Keep();
|
||||
|
||||
context.HttpContext.Response.Redirect(destinationUrl);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user