2020-12-20 08:36:11 +01:00
|
|
|
// Copyright (c) Umbraco.
|
|
|
|
|
// See LICENSE for more details.
|
|
|
|
|
|
|
|
|
|
using Microsoft.AspNetCore.Mvc;
|
2020-02-29 14:26:35 +01:00
|
|
|
using Moq;
|
|
|
|
|
using NUnit.Framework;
|
2021-02-18 11:06:02 +01:00
|
|
|
using Umbraco.Cms.Core.Configuration.Models;
|
2022-05-06 15:06:39 +02:00
|
|
|
using Umbraco.Cms.Core.Hosting;
|
2021-02-18 11:06:02 +01:00
|
|
|
using Umbraco.Cms.Core.IO;
|
2025-08-26 13:31:27 +02:00
|
|
|
using Umbraco.Cms.Core.Services;
|
2021-02-18 11:06:02 +01:00
|
|
|
using Umbraco.Cms.Core.Web;
|
|
|
|
|
using Umbraco.Cms.Tests.Common;
|
|
|
|
|
using Umbraco.Cms.Web.Website.Controllers;
|
|
|
|
|
using Umbraco.Cms.Web.Website.Models;
|
2022-10-05 12:14:43 +02:00
|
|
|
using Constants = Umbraco.Cms.Core.Constants;
|
2020-02-29 14:26:35 +01:00
|
|
|
|
2022-06-21 08:09:38 +02:00
|
|
|
namespace Umbraco.Cms.Tests.UnitTests.Umbraco.Web.Website.Controllers;
|
|
|
|
|
|
|
|
|
|
[TestFixture]
|
|
|
|
|
public class RenderNoContentControllerTests
|
2020-02-29 14:26:35 +01:00
|
|
|
{
|
2022-06-21 08:09:38 +02:00
|
|
|
[Test]
|
|
|
|
|
public void Redirects_To_Root_When_Content_Published()
|
2020-02-29 14:26:35 +01:00
|
|
|
{
|
2025-08-26 13:31:27 +02:00
|
|
|
var mockUrlService = new Mock<IDocumentUrlService>();
|
|
|
|
|
mockUrlService.Setup(x => x.HasAny()).Returns(true);
|
2022-06-21 08:09:38 +02:00
|
|
|
var mockHostingEnvironment = new Mock<IHostingEnvironment>();
|
|
|
|
|
var controller = new RenderNoContentController(
|
2025-03-03 07:38:30 +01:00
|
|
|
mockHostingEnvironment.Object,
|
2025-08-26 13:31:27 +02:00
|
|
|
new TestOptionsSnapshot<GlobalSettings>(new GlobalSettings()),
|
|
|
|
|
mockUrlService.Object);
|
2020-02-29 14:26:35 +01:00
|
|
|
|
2022-06-21 08:09:38 +02:00
|
|
|
var result = controller.Index() as RedirectResult;
|
2020-02-29 14:26:35 +01:00
|
|
|
|
2022-06-21 08:09:38 +02:00
|
|
|
Assert.IsNotNull(result);
|
|
|
|
|
Assert.AreEqual("~/", result.Url);
|
|
|
|
|
}
|
2022-05-06 15:06:39 +02:00
|
|
|
|
2022-06-21 08:09:38 +02:00
|
|
|
[Test]
|
|
|
|
|
public void Renders_View_When_No_Content_Published()
|
|
|
|
|
{
|
2022-10-05 12:14:43 +02:00
|
|
|
const string umbracoPathSetting = Constants.System.DefaultUmbracoPath;
|
2022-06-21 08:09:38 +02:00
|
|
|
const string umbracoPath = "/umbraco";
|
|
|
|
|
const string viewPath = "~/config/splashes/NoNodes.cshtml";
|
2025-08-26 13:31:27 +02:00
|
|
|
var mockUrlService = new Mock<IDocumentUrlService>();
|
|
|
|
|
mockUrlService.Setup(x => x.HasAny()).Returns(false);
|
2022-06-21 08:09:38 +02:00
|
|
|
var mockIOHelper = new Mock<IIOHelper>();
|
|
|
|
|
mockIOHelper.Setup(x => x.ResolveUrl(It.Is<string>(y => y == umbracoPathSetting))).Returns(umbracoPath);
|
|
|
|
|
var mockHostingEnvironment = new Mock<IHostingEnvironment>();
|
|
|
|
|
mockHostingEnvironment.Setup(x => x.ToAbsolute(It.Is<string>(y => y == umbracoPathSetting)))
|
|
|
|
|
.Returns(umbracoPath);
|
2020-11-03 18:55:55 +01:00
|
|
|
|
2022-06-21 08:09:38 +02:00
|
|
|
var globalSettings = new TestOptionsSnapshot<GlobalSettings>(new GlobalSettings
|
|
|
|
|
{
|
|
|
|
|
NoNodesViewPath = viewPath,
|
|
|
|
|
});
|
2025-08-26 13:31:27 +02:00
|
|
|
var controller = new RenderNoContentController(mockHostingEnvironment.Object, globalSettings, mockUrlService.Object);
|
2020-02-29 14:26:35 +01:00
|
|
|
|
2022-06-21 08:09:38 +02:00
|
|
|
var result = controller.Index() as ViewResult;
|
|
|
|
|
Assert.IsNotNull(result);
|
|
|
|
|
Assert.AreEqual(viewPath, result.ViewName);
|
2020-02-29 14:26:35 +01:00
|
|
|
|
2022-06-21 08:09:38 +02:00
|
|
|
var model = result.Model as NoNodesViewModel;
|
|
|
|
|
Assert.IsNotNull(model);
|
|
|
|
|
Assert.AreEqual(umbracoPath, model.UmbracoPath);
|
2020-02-29 14:26:35 +01:00
|
|
|
}
|
|
|
|
|
}
|