Files
Umbraco-CMS/tests/Umbraco.Tests.UnitTests/Umbraco.Core/Web/Routing/PublishedRequestBuilderTests.cs
Paul Johnson 00133e880d Move test projects from src/ to tests/ (#11357)
* Update gitignore

* Move csproj

* Update project references

* Update solutions

* Update build scripts

* Tests used to share editorconfig with projects in src

* Fix broken tests.

* Stop copying around .editorconfig

merged root one with linting

* csharp_style_expression_bodied -> suggestion

* Move StyleCop rulesets to matching directories and update shared build properties

* Remove legacy build files, update NuGet.cofig and solution files

* Restore myget source

* Clean up .gitignore

* Update .gitignore

* Move new test classes to tests after merge

* Gitignore + nuget config

* Move new test

Co-authored-by: Ronald Barendse <ronald@barend.se>
2021-10-18 08:14:04 +01:00

97 lines
3.4 KiB
C#

using System;
using System.Collections.Generic;
using Moq;
using NUnit.Framework;
using Umbraco.Cms.Core.Models;
using Umbraco.Cms.Core.Models.PublishedContent;
using Umbraco.Cms.Core.Routing;
using Umbraco.Cms.Core.Services;
namespace Umbraco.Cms.Tests.UnitTests.Umbraco.Core.Web.Routing
{
[TestFixture]
public class PublishedRequestBuilderTests
{
private readonly Uri _baseUri = new Uri("https://example.com");
private IPublishedRequestBuilder GetBuilder() => new PublishedRequestBuilder(
_baseUri,
Mock.Of<IFileService>());
[Test]
public void Setting_Published_Content_Clears_Template_And_Redirect()
{
IPublishedRequestBuilder sut = GetBuilder();
sut.SetTemplate(Mock.Of<ITemplate>());
Assert.IsNotNull(sut.Template);
sut.SetInternalRedirect(Mock.Of<IPublishedContent>());
Assert.IsNull(sut.Template);
Assert.IsTrue(sut.IsInternalRedirect);
sut.SetTemplate(Mock.Of<ITemplate>());
sut.SetPublishedContent(Mock.Of<IPublishedContent>());
Assert.IsNull(sut.Template);
Assert.IsFalse(sut.IsInternalRedirect);
}
[Test]
public void Setting_Domain_Also_Sets_Culture()
{
IPublishedRequestBuilder sut = GetBuilder();
Assert.IsNull(sut.Culture);
sut.SetDomain(
new DomainAndUri(
new Domain(1, "test", 2, "en-AU", false), new Uri("https://example.com/en-au")));
Assert.IsNotNull(sut.Domain);
Assert.IsNotNull(sut.Culture);
}
[Test]
public void Builds_All_Values()
{
IPublishedRequestBuilder sut = GetBuilder();
IPublishedContent content = Mock.Of<IPublishedContent>(x => x.Id == 1);
ITemplate template = Mock.Of<ITemplate>(x => x.Id == 1);
string[] cacheExt = new[] { "must-revalidate" };
var auCulture = "en-AU";
var usCulture = "en-US";
var domain = new DomainAndUri(
new Domain(1, "test", 2, auCulture, false), new Uri("https://example.com/en-au"));
IReadOnlyDictionary<string, string> headers = new Dictionary<string, string> { ["Hello"] = "world" };
var redirect = "https://test.com";
sut
.SetNoCacheHeader(true)
.SetCacheExtensions(cacheExt)
.SetDomain(domain)
.SetCulture(usCulture)
.SetHeaders(headers)
.SetInternalRedirect(content)
.SetRedirect(redirect)
.SetTemplate(template);
IPublishedRequest request = sut.Build();
Assert.AreEqual(true, request.SetNoCacheHeader);
Assert.AreEqual(cacheExt, request.CacheExtensions);
Assert.AreEqual(usCulture, request.Culture);
Assert.AreEqual(domain, request.Domain);
Assert.AreEqual(headers, request.Headers);
Assert.AreEqual(true, request.IsInternalRedirect);
Assert.AreEqual(content, request.PublishedContent);
Assert.AreEqual(redirect, request.RedirectUrl);
Assert.AreEqual(302, request.ResponseStatusCode);
Assert.AreEqual(template, request.Template);
Assert.AreEqual(_baseUri, request.Uri);
}
}
}