Fixing tests

This commit is contained in:
Shannon
2021-02-05 12:19:09 +11:00
parent 6273c95a90
commit eed8e4dca8
2 changed files with 36 additions and 27 deletions

View File

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

View File

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