From e89b6fe6e769caef3fcd091b4e9ca5166bb3848d Mon Sep 17 00:00:00 2001 From: Ollie Philpott Date: Thu, 23 Apr 2020 11:51:12 +0100 Subject: [PATCH 1/6] Move DateTimeExtensions tests --- .../Umbraco.Core}/DateTimeExtensionsTests.cs | 2 +- src/Umbraco.Tests/Umbraco.Tests.csproj | 1 - 2 files changed, 1 insertion(+), 2 deletions(-) rename src/{Umbraco.Tests/Misc => Umbraco.Tests.UnitTests/Umbraco.Core}/DateTimeExtensionsTests.cs (97%) diff --git a/src/Umbraco.Tests/Misc/DateTimeExtensionsTests.cs b/src/Umbraco.Tests.UnitTests/Umbraco.Core/DateTimeExtensionsTests.cs similarity index 97% rename from src/Umbraco.Tests/Misc/DateTimeExtensionsTests.cs rename to src/Umbraco.Tests.UnitTests/Umbraco.Core/DateTimeExtensionsTests.cs index 99d3943a04..b1585aa17f 100644 --- a/src/Umbraco.Tests/Misc/DateTimeExtensionsTests.cs +++ b/src/Umbraco.Tests.UnitTests/Umbraco.Core/DateTimeExtensionsTests.cs @@ -2,7 +2,7 @@ using NUnit.Framework; using Umbraco.Core; -namespace Umbraco.Tests.Misc +namespace Umbraco.Tests.UnitTests.Umbraco.Core { [TestFixture] public class DateTimeExtensionsTests diff --git a/src/Umbraco.Tests/Umbraco.Tests.csproj b/src/Umbraco.Tests/Umbraco.Tests.csproj index 26c5316e07..ec2e836204 100644 --- a/src/Umbraco.Tests/Umbraco.Tests.csproj +++ b/src/Umbraco.Tests/Umbraco.Tests.csproj @@ -179,7 +179,6 @@ - From 6144c4cb036339b34fe8c772f3cbc85fbc6ec7d7 Mon Sep 17 00:00:00 2001 From: Ollie Philpott Date: Thu, 23 Apr 2020 12:11:28 +0100 Subject: [PATCH 2/6] Move HashCodeCombiner tests --- .../Umbraco.Core}/HashCodeCombinerTests.cs | 9 +++++---- src/Umbraco.Tests/Umbraco.Tests.csproj | 1 - 2 files changed, 5 insertions(+), 5 deletions(-) rename src/{Umbraco.Tests/Misc => Umbraco.Tests.UnitTests/Umbraco.Core}/HashCodeCombinerTests.cs (97%) diff --git a/src/Umbraco.Tests/Misc/HashCodeCombinerTests.cs b/src/Umbraco.Tests.UnitTests/Umbraco.Core/HashCodeCombinerTests.cs similarity index 97% rename from src/Umbraco.Tests/Misc/HashCodeCombinerTests.cs rename to src/Umbraco.Tests.UnitTests/Umbraco.Core/HashCodeCombinerTests.cs index 6a30e09d84..ecd2d13e78 100644 --- a/src/Umbraco.Tests/Misc/HashCodeCombinerTests.cs +++ b/src/Umbraco.Tests.UnitTests/Umbraco.Core/HashCodeCombinerTests.cs @@ -4,20 +4,21 @@ using System.Reflection; using NUnit.Framework; using Umbraco.Core; -namespace Umbraco.Tests.Misc +namespace Umbraco.Tests.UnitTests.Umbraco.Core { [TestFixture] public class HashCodeCombinerTests { - private DirectoryInfo PrepareFolder() { var assDir = new FileInfo(Assembly.GetExecutingAssembly().Location).Directory; - var dir = Directory.CreateDirectory(Path.Combine(assDir.FullName, "HashCombiner", Guid.NewGuid().ToString("N"))); + var dir = Directory.CreateDirectory(Path.Combine(assDir.FullName, "HashCombiner", + Guid.NewGuid().ToString("N"))); foreach (var f in dir.GetFiles()) { f.Delete(); } + return dir; } @@ -80,6 +81,7 @@ namespace Umbraco.Tests.Misc { file1.WriteLine("hello"); } + var file2Path = Path.Combine(dir.FullName, "hastest2.txt"); File.Delete(file2Path); using (var file2 = File.CreateText(Path.Combine(dir.FullName, "hastest2.txt"))) @@ -140,6 +142,5 @@ namespace Umbraco.Tests.Misc Assert.AreNotEqual(combiner1.GetCombinedHashCode(), combiner3.GetCombinedHashCode()); } - } } diff --git a/src/Umbraco.Tests/Umbraco.Tests.csproj b/src/Umbraco.Tests/Umbraco.Tests.csproj index ec2e836204..5d5674994b 100644 --- a/src/Umbraco.Tests/Umbraco.Tests.csproj +++ b/src/Umbraco.Tests/Umbraco.Tests.csproj @@ -386,7 +386,6 @@ - From 30be5f30ca805e8584ac74bf4485a163d04a9b24 Mon Sep 17 00:00:00 2001 From: Ollie Philpott Date: Thu, 23 Apr 2020 12:13:08 +0100 Subject: [PATCH 3/6] Move HashGenerator tests --- .../Umbraco.Core}/HashGeneratorTests.cs | 10 ++++++---- src/Umbraco.Tests/Umbraco.Tests.csproj | 1 - 2 files changed, 6 insertions(+), 5 deletions(-) rename src/{Umbraco.Tests/Misc => Umbraco.Tests.UnitTests/Umbraco.Core}/HashGeneratorTests.cs (98%) diff --git a/src/Umbraco.Tests/Misc/HashGeneratorTests.cs b/src/Umbraco.Tests.UnitTests/Umbraco.Core/HashGeneratorTests.cs similarity index 98% rename from src/Umbraco.Tests/Misc/HashGeneratorTests.cs rename to src/Umbraco.Tests.UnitTests/Umbraco.Core/HashGeneratorTests.cs index 1b79494164..08f5b69cab 100644 --- a/src/Umbraco.Tests/Misc/HashGeneratorTests.cs +++ b/src/Umbraco.Tests.UnitTests/Umbraco.Core/HashGeneratorTests.cs @@ -4,7 +4,7 @@ using System.Reflection; using NUnit.Framework; using Umbraco.Core; -namespace Umbraco.Tests.Misc +namespace Umbraco.Tests.UnitTests.Umbraco.Core { [TestFixture] public class HashGeneratorTests @@ -20,6 +20,7 @@ namespace Umbraco.Tests.Misc else generator.AddCaseInsensitiveString(str); } + return generator.GenerateHash(); } } @@ -27,7 +28,6 @@ namespace Umbraco.Tests.Misc [Test] public void Generate_Hash_Multiple_Strings_Case_Sensitive() { - var hash1 = Generate(true, "hello", "world"); var hash2 = Generate(true, "hello", "world"); var hashFalse1 = Generate(true, "hello", "worlD"); @@ -54,11 +54,13 @@ namespace Umbraco.Tests.Misc private DirectoryInfo PrepareFolder() { var assDir = new FileInfo(Assembly.GetExecutingAssembly().Location).Directory; - var dir = Directory.CreateDirectory(Path.Combine(assDir.FullName, "HashCombiner", Guid.NewGuid().ToString("N"))); + var dir = Directory.CreateDirectory(Path.Combine(assDir.FullName, "HashCombiner", + Guid.NewGuid().ToString("N"))); foreach (var f in dir.GetFiles()) { f.Delete(); } + return dir; } @@ -74,7 +76,6 @@ namespace Umbraco.Tests.Misc combiner2.AddCaseInsensitiveString("world"); Assert.AreNotEqual(combiner1.GenerateHash(), combiner2.GenerateHash()); } - } [Test] @@ -120,6 +121,7 @@ namespace Umbraco.Tests.Misc { file1.WriteLine("hello"); } + var file2Path = Path.Combine(dir.FullName, "hastest2.txt"); File.Delete(file2Path); using (var file2 = File.CreateText(Path.Combine(dir.FullName, "hastest2.txt"))) diff --git a/src/Umbraco.Tests/Umbraco.Tests.csproj b/src/Umbraco.Tests/Umbraco.Tests.csproj index 5d5674994b..1844327a7f 100644 --- a/src/Umbraco.Tests/Umbraco.Tests.csproj +++ b/src/Umbraco.Tests/Umbraco.Tests.csproj @@ -179,7 +179,6 @@ - From b056719cdcc12f79e5c4eaa1db527ff3f6d0cc93 Mon Sep 17 00:00:00 2001 From: Ollie Philpott Date: Thu, 23 Apr 2020 15:01:17 +0100 Subject: [PATCH 4/6] Move XmlHelper tests and add builder --- .../XmlDocumentBuilder.cs | 126 ++++++++ .../Umbraco.Core/Xml/XmlHelperTests.cs | 157 ++++++++++ .../Builders/XmlDocumentBuilderTests.cs | 27 ++ src/Umbraco.Tests/Misc/XmlHelperTests.cs | 270 ------------------ src/Umbraco.Tests/Umbraco.Tests.csproj | 1 - 5 files changed, 310 insertions(+), 271 deletions(-) create mode 100644 src/Umbraco.Tests.Common/XmlDocumentBuilder.cs create mode 100644 src/Umbraco.Tests.UnitTests/Umbraco.Core/Xml/XmlHelperTests.cs create mode 100644 src/Umbraco.Tests.UnitTests/Umbraco.Tests.Common/Builders/XmlDocumentBuilderTests.cs delete mode 100644 src/Umbraco.Tests/Misc/XmlHelperTests.cs diff --git a/src/Umbraco.Tests.Common/XmlDocumentBuilder.cs b/src/Umbraco.Tests.Common/XmlDocumentBuilder.cs new file mode 100644 index 0000000000..14fde615e2 --- /dev/null +++ b/src/Umbraco.Tests.Common/XmlDocumentBuilder.cs @@ -0,0 +1,126 @@ +using System.Xml; +using Umbraco.Tests.Common.Builders; + +namespace Umbraco.Tests.Common +{ + public class XmlDocumentBuilder : BuilderBase + { + private string _content; + + public XmlDocumentBuilder WithContent(string content) + { + _content = content; + return this; + } + + public override XmlDocument Build() + { + var xml = new XmlDocument(); + xml.LoadXml(_content ?? DefaultContent); + return xml; + } + + private const string DefaultContent = + @" + + + + + ]> + + + + + 1 + + This is some content]]> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + "; + } +} diff --git a/src/Umbraco.Tests.UnitTests/Umbraco.Core/Xml/XmlHelperTests.cs b/src/Umbraco.Tests.UnitTests/Umbraco.Core/Xml/XmlHelperTests.cs new file mode 100644 index 0000000000..d25da903f8 --- /dev/null +++ b/src/Umbraco.Tests.UnitTests/Umbraco.Core/Xml/XmlHelperTests.cs @@ -0,0 +1,157 @@ +using System.Diagnostics; +using System.Linq; +using System.Xml; +using System.Xml.XPath; +using NUnit.Framework; +using Umbraco.Core; +using Umbraco.Core.Xml; +using Umbraco.Tests.Common; + +namespace Umbraco.Tests.UnitTests.Umbraco.Core.Xml +{ + [TestFixture] + public class XmlHelperTests + { + private XmlDocumentBuilder _builder; + + [SetUp] + public void SetUp() + { + _builder = new XmlDocumentBuilder(); + } + + [Ignore("This is a benchmark test so is ignored by default")] + [Test] + public void Sort_Nodes_Benchmark_Legacy() + { + var xml = _builder.Build(); + var original = xml.GetElementById(1173.ToString()); + Assert.IsNotNull(original); + + long totalTime = 0; + var watch = new Stopwatch(); + var iterations = 10000; + + for (var i = 0; i < iterations; i++) + { + //don't measure the time for clone! + var parentNode = original.Clone(); + watch.Start(); + LegacySortNodes(ref parentNode); + watch.Stop(); + totalTime += watch.ElapsedMilliseconds; + watch.Reset(); + + //do assertions just to make sure it is working properly. + var currSort = 0; + foreach (var child in parentNode.SelectNodes("./* [@id]").Cast()) + { + Assert.AreEqual(currSort, int.Parse(child.Attributes["sortOrder"].Value)); + currSort++; + } + + //ensure the parent node's properties still exist first + Assert.AreEqual("content", parentNode.ChildNodes[0].Name); + Assert.AreEqual("umbracoUrlAlias", parentNode.ChildNodes[1].Name); + //then the child nodes should come straight after + Assert.IsTrue(parentNode.ChildNodes[2].Attributes["id"] != null); + } + + Debug.WriteLine("Total time for " + iterations + " iterations is " + totalTime); + } + + [Ignore("This is a benchmark test so is ignored by default")] + [Test] + public void Sort_Nodes_Benchmark_New() + { + var xml = _builder.Build(); + var original = xml.GetElementById(1173.ToString()); + Assert.IsNotNull(original); + + long totalTime = 0; + var watch = new Stopwatch(); + var iterations = 10000; + + for (var i = 0; i < iterations; i++) + { + //don't measure the time for clone! + var parentNode = (XmlElement) original.Clone(); + watch.Start(); + XmlHelper.SortNodes( + parentNode, + "./* [@id]", + x => x.AttributeValue("sortOrder")); + watch.Stop(); + totalTime += watch.ElapsedMilliseconds; + watch.Reset(); + + //do assertions just to make sure it is working properly. + var currSort = 0; + foreach (var child in parentNode.SelectNodes("./* [@id]").Cast()) + { + Assert.AreEqual(currSort, int.Parse(child.Attributes["sortOrder"].Value)); + currSort++; + } + + //ensure the parent node's properties still exist first + Assert.AreEqual("content", parentNode.ChildNodes[0].Name); + Assert.AreEqual("umbracoUrlAlias", parentNode.ChildNodes[1].Name); + //then the child nodes should come straight after + Assert.IsTrue(parentNode.ChildNodes[2].Attributes["id"] != null); + } + + Debug.WriteLine("Total time for " + iterations + " iterations is " + totalTime); + } + + [Test] + public void Sort_Nodes() + { + var xml = _builder.Build(); + var original = xml.GetElementById(1173.ToString()); + Assert.IsNotNull(original); + + var parentNode = (XmlElement) original.Clone(); + + XmlHelper.SortNodes( + parentNode, + "./* [@id]", + x => x.AttributeValue("sortOrder")); + + //do assertions just to make sure it is working properly. + var currSort = 0; + foreach (var child in parentNode.SelectNodes("./* [@id]").Cast()) + { + Assert.AreEqual(currSort, int.Parse(child.Attributes["sortOrder"].Value)); + currSort++; + } + + //ensure the parent node's properties still exist first + Assert.AreEqual("content", parentNode.ChildNodes[0].Name); + Assert.AreEqual("umbracoUrlAlias", parentNode.ChildNodes[1].Name); + //then the child nodes should come straight after + Assert.IsTrue(parentNode.ChildNodes[2].Attributes["id"] != null); + } + + /// + /// This was the logic to sort before and now lives here just to show the benchmarks tests above. + /// + /// + private static void LegacySortNodes(ref XmlNode parentNode) + { + var n = parentNode.CloneNode(true); + + // remove all children from original node + var xpath = "./* [@id]"; + foreach (XmlNode child in parentNode.SelectNodes(xpath)) + parentNode.RemoveChild(child); + + var nav = n.CreateNavigator(); + var expr = nav.Compile(xpath); + expr.AddSort("@sortOrder", XmlSortOrder.Ascending, XmlCaseOrder.None, "", XmlDataType.Number); + var iterator = nav.Select(expr); + while (iterator.MoveNext()) + parentNode.AppendChild( + ((IHasXmlNode) iterator.Current).GetNode()); + } + } +} diff --git a/src/Umbraco.Tests.UnitTests/Umbraco.Tests.Common/Builders/XmlDocumentBuilderTests.cs b/src/Umbraco.Tests.UnitTests/Umbraco.Tests.Common/Builders/XmlDocumentBuilderTests.cs new file mode 100644 index 0000000000..0c77cd3222 --- /dev/null +++ b/src/Umbraco.Tests.UnitTests/Umbraco.Tests.Common/Builders/XmlDocumentBuilderTests.cs @@ -0,0 +1,27 @@ +using NUnit.Framework; +using Umbraco.Tests.Common; + +namespace Umbraco.Tests.UnitTests.Umbraco.Tests.Common.Builders +{ + [TestFixture] + public class XmlDocumentBuilderTests + { + [Test] + public void Is_Built_Correctly() + { + // Arrange + const string content = + @""; + + var builder = new XmlDocumentBuilder(); + + // Act + var xml = builder + .WithContent(content) + .Build(); + + // Assert + Assert.AreEqual(content, xml.OuterXml); + } + } +} diff --git a/src/Umbraco.Tests/Misc/XmlHelperTests.cs b/src/Umbraco.Tests/Misc/XmlHelperTests.cs deleted file mode 100644 index cb666a72fb..0000000000 --- a/src/Umbraco.Tests/Misc/XmlHelperTests.cs +++ /dev/null @@ -1,270 +0,0 @@ -using System.Diagnostics; -using System.Linq; -using System.Xml; -using System.Xml.XPath; -using NUnit.Framework; -using Umbraco.Core; -using Umbraco.Core.Xml; - -namespace Umbraco.Tests.Misc -{ - [TestFixture] - public class XmlHelperTests - { - [SetUp] - public void Setup() - { - } - - [Ignore("This is a benchmark test so is ignored by default")] - [Test] - public void Sort_Nodes_Benchmark_Legacy() - { - var xmlContent = GetXmlContent(1); - var xml = new XmlDocument(); - xml.LoadXml(xmlContent); - var original = xml.GetElementById(1173.ToString()); - Assert.IsNotNull(original); - - long totalTime = 0; - var watch = new Stopwatch(); - var iterations = 10000; - - for (var i = 0; i < iterations; i++) - { - //don't measure the time for clone! - var parentNode = original.Clone(); - watch.Start(); - LegacySortNodes(ref parentNode); - watch.Stop(); - totalTime += watch.ElapsedMilliseconds; - watch.Reset(); - - //do assertions just to make sure it is working properly. - var currSort = 0; - foreach (var child in parentNode.SelectNodes("./* [@id]").Cast()) - { - Assert.AreEqual(currSort, int.Parse(child.Attributes["sortOrder"].Value)); - currSort++; - } - - //ensure the parent node's properties still exist first - Assert.AreEqual("content", parentNode.ChildNodes[0].Name); - Assert.AreEqual("umbracoUrlAlias", parentNode.ChildNodes[1].Name); - //then the child nodes should come straight after - Assert.IsTrue(parentNode.ChildNodes[2].Attributes["id"] != null); - } - - Debug.WriteLine("Total time for " + iterations + " iterations is " + totalTime); - } - - [Ignore("This is a benchmark test so is ignored by default")] - [Test] - public void Sort_Nodes_Benchmark_New() - { - var xmlContent = GetXmlContent(1); - var xml = new XmlDocument(); - xml.LoadXml(xmlContent); - var original = xml.GetElementById(1173.ToString()); - Assert.IsNotNull(original); - - long totalTime = 0; - var watch = new Stopwatch(); - var iterations = 10000; - - for (var i = 0; i < iterations; i++) - { - //don't measure the time for clone! - var parentNode = (XmlElement)original.Clone(); - watch.Start(); - XmlHelper.SortNodes( - parentNode, - "./* [@id]", - x => x.AttributeValue("sortOrder")); - watch.Stop(); - totalTime += watch.ElapsedMilliseconds; - watch.Reset(); - - //do assertions just to make sure it is working properly. - var currSort = 0; - foreach (var child in parentNode.SelectNodes("./* [@id]").Cast()) - { - Assert.AreEqual(currSort, int.Parse(child.Attributes["sortOrder"].Value)); - currSort++; - } - //ensure the parent node's properties still exist first - Assert.AreEqual("content", parentNode.ChildNodes[0].Name); - Assert.AreEqual("umbracoUrlAlias", parentNode.ChildNodes[1].Name); - //then the child nodes should come straight after - Assert.IsTrue(parentNode.ChildNodes[2].Attributes["id"] != null); - - } - - Debug.WriteLine("Total time for " + iterations + " iterations is " + totalTime); - } - - - [Test] - public void Sort_Nodes() - { - var xmlContent = GetXmlContent(1); - var xml = new XmlDocument(); - xml.LoadXml(xmlContent); - var original = xml.GetElementById(1173.ToString()); - Assert.IsNotNull(original); - - var parentNode = (XmlElement)original.Clone(); - - XmlHelper.SortNodes( - parentNode, - "./* [@id]", - x => x.AttributeValue("sortOrder")); - - //do assertions just to make sure it is working properly. - var currSort = 0; - foreach (var child in parentNode.SelectNodes("./* [@id]").Cast()) - { - Assert.AreEqual(currSort, int.Parse(child.Attributes["sortOrder"].Value)); - currSort++; - } - //ensure the parent node's properties still exist first - Assert.AreEqual("content", parentNode.ChildNodes[0].Name); - Assert.AreEqual("umbracoUrlAlias", parentNode.ChildNodes[1].Name); - //then the child nodes should come straight after - Assert.IsTrue(parentNode.ChildNodes[2].Attributes["id"] != null); - } - - /// - /// This was the logic to sort before and now lives here just to show the benchmarks tests above. - /// - /// - private static void LegacySortNodes(ref XmlNode parentNode) - { - XmlNode n = parentNode.CloneNode(true); - - // remove all children from original node - string xpath = "./* [@id]"; - foreach (XmlNode child in parentNode.SelectNodes(xpath)) - parentNode.RemoveChild(child); - - - XPathNavigator nav = n.CreateNavigator(); - XPathExpression expr = nav.Compile(xpath); - expr.AddSort("@sortOrder", XmlSortOrder.Ascending, XmlCaseOrder.None, "", XmlDataType.Number); - XPathNodeIterator iterator = nav.Select(expr); - while (iterator.MoveNext()) - parentNode.AppendChild( - ((IHasXmlNode)iterator.Current).GetNode()); - } - - /// - /// returns xml with a reverse sort order - /// - /// - /// - private string GetXmlContent(int templateId) - { - return @" - - - - -]> - - - - - 1 - - This is some content]]> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -"; - } - } -} diff --git a/src/Umbraco.Tests/Umbraco.Tests.csproj b/src/Umbraco.Tests/Umbraco.Tests.csproj index 1844327a7f..afd82dbe75 100644 --- a/src/Umbraco.Tests/Umbraco.Tests.csproj +++ b/src/Umbraco.Tests/Umbraco.Tests.csproj @@ -490,7 +490,6 @@ - From c567b11c814434cc2e8008ff44a064195258e959 Mon Sep 17 00:00:00 2001 From: Ollie Philpott Date: Thu, 23 Apr 2020 15:36:48 +0100 Subject: [PATCH 5/6] Move builder to correct folder --- src/Umbraco.Tests.Common/{ => Builders}/XmlDocumentBuilder.cs | 3 +-- src/Umbraco.Tests.UnitTests/Umbraco.Core/Xml/XmlHelperTests.cs | 2 +- 2 files changed, 2 insertions(+), 3 deletions(-) rename src/Umbraco.Tests.Common/{ => Builders}/XmlDocumentBuilder.cs (99%) diff --git a/src/Umbraco.Tests.Common/XmlDocumentBuilder.cs b/src/Umbraco.Tests.Common/Builders/XmlDocumentBuilder.cs similarity index 99% rename from src/Umbraco.Tests.Common/XmlDocumentBuilder.cs rename to src/Umbraco.Tests.Common/Builders/XmlDocumentBuilder.cs index 14fde615e2..d5250c3739 100644 --- a/src/Umbraco.Tests.Common/XmlDocumentBuilder.cs +++ b/src/Umbraco.Tests.Common/Builders/XmlDocumentBuilder.cs @@ -1,7 +1,6 @@ using System.Xml; -using Umbraco.Tests.Common.Builders; -namespace Umbraco.Tests.Common +namespace Umbraco.Tests.Common.Builders { public class XmlDocumentBuilder : BuilderBase { diff --git a/src/Umbraco.Tests.UnitTests/Umbraco.Core/Xml/XmlHelperTests.cs b/src/Umbraco.Tests.UnitTests/Umbraco.Core/Xml/XmlHelperTests.cs index d25da903f8..495ca0186d 100644 --- a/src/Umbraco.Tests.UnitTests/Umbraco.Core/Xml/XmlHelperTests.cs +++ b/src/Umbraco.Tests.UnitTests/Umbraco.Core/Xml/XmlHelperTests.cs @@ -5,7 +5,7 @@ using System.Xml.XPath; using NUnit.Framework; using Umbraco.Core; using Umbraco.Core.Xml; -using Umbraco.Tests.Common; +using Umbraco.Tests.Common.Builders; namespace Umbraco.Tests.UnitTests.Umbraco.Core.Xml { From 2b7b9db3a57038d68338a81c1feed5cf0e054a47 Mon Sep 17 00:00:00 2001 From: Ollie Philpott Date: Fri, 24 Apr 2020 09:27:44 +0100 Subject: [PATCH 6/6] Moved and refactored UriUtility tests --- .../Umbraco.Core/Routing}/UriUtilityTests.cs | 82 +++++++++---------- .../Builders/XmlDocumentBuilderTests.cs | 2 +- src/Umbraco.Tests/Umbraco.Tests.csproj | 1 - 3 files changed, 42 insertions(+), 43 deletions(-) rename src/{Umbraco.Tests/Misc => Umbraco.Tests.UnitTests/Umbraco.Core/Routing}/UriUtilityTests.cs (71%) diff --git a/src/Umbraco.Tests/Misc/UriUtilityTests.cs b/src/Umbraco.Tests.UnitTests/Umbraco.Core/Routing/UriUtilityTests.cs similarity index 71% rename from src/Umbraco.Tests/Misc/UriUtilityTests.cs rename to src/Umbraco.Tests.UnitTests/Umbraco.Core/Routing/UriUtilityTests.cs index a10d6e2179..15a9599674 100644 --- a/src/Umbraco.Tests/Misc/UriUtilityTests.cs +++ b/src/Umbraco.Tests.UnitTests/Umbraco.Core/Routing/UriUtilityTests.cs @@ -1,25 +1,18 @@ using System; -using System.Configuration; using Moq; using NUnit.Framework; -using Umbraco.Tests.TestHelpers; +using Umbraco.Core.Configuration; +using Umbraco.Core.Configuration.UmbracoSettings; +using Umbraco.Core.Hosting; using Umbraco.Web; -namespace Umbraco.Tests.Misc +namespace Umbraco.Tests.UnitTests.Umbraco.Core.Routing { // FIXME: not testing virtual directory! [TestFixture] public class UriUtilityTests { - - public UriUtility UriUtility { get; } = TestHelper.UriUtility; - [TearDown] - public void TearDown() - { - SettingsForTests.Reset(); - } - // test normal urls [TestCase("http://LocalHost/", "http://localhost/")] [TestCase("http://LocalHost/?x=y", "http://localhost/?x=y")] @@ -50,19 +43,20 @@ namespace Umbraco.Tests.Misc [TestCase("http://Localhost/Home/Sub1.aspx/Sub2?x=y", "http://localhost/home/sub1/sub2?x=y")] [TestCase("http://Localhost/Home.aspx/Sub1.aspx/Sub2?x=y", "http://localhost/home/sub1/sub2?x=y")] [TestCase("http://Localhost/deFault.aspx/Home.aspx/deFault.aspx/Sub1.aspx", "http://localhost/home/default/sub1")] - public void Uri_To_Umbraco(string sourceUrl, string expectedUrl) { - UriUtility.SetAppDomainAppVirtualPath("/"); - - var expectedUri = new Uri(expectedUrl); + // Arrange var sourceUri = new Uri(sourceUrl); - var resultUri = UriUtility.UriToUmbraco(sourceUri); + var uriUtility = BuildUriUtility("/"); + // Act + var resultUri = uriUtility.UriToUmbraco(sourceUri); + + // Assert + var expectedUri = new Uri(expectedUrl); Assert.AreEqual(expectedUri.ToString(), resultUri.ToString()); } - // test directoryUrl true, trailingSlash false [TestCase("/", "/", false)] [TestCase("/home", "/home", false)] @@ -72,30 +66,22 @@ namespace Umbraco.Tests.Misc [TestCase("/", "/", true)] [TestCase("/home", "/home/", true)] [TestCase("/home/sub1", "/home/sub1/", true)] - public void Uri_From_Umbraco(string sourceUrl, string expectedUrl, bool trailingSlash) { - var globalConfig = Mock.Get(SettingsForTests.GenerateMockGlobalSettings()); + // Arrange + var sourceUri = new Uri(sourceUrl, UriKind.Relative); + var mockRequestHandlerSettings = new Mock(); + mockRequestHandlerSettings.Setup(x => x.AddTrailingSlash).Returns(trailingSlash); + var uriUtility = BuildUriUtility("/"); - var settings = SettingsForTests.GenerateMockRequestHandlerSettings(); - var requestMock = Mock.Get(settings); - requestMock.Setup(x => x.AddTrailingSlash).Returns(trailingSlash); - - UriUtility.SetAppDomainAppVirtualPath("/"); - - var expectedUri = NewUri(expectedUrl); - var sourceUri = NewUri(sourceUrl); - var resultUri = UriUtility.UriFromUmbraco(sourceUri, globalConfig.Object, settings); + // Act + var resultUri = uriUtility.UriFromUmbraco(sourceUri, Mock.Of(), mockRequestHandlerSettings.Object); + // Assert + var expectedUri = new Uri(expectedUrl, UriKind.Relative); Assert.AreEqual(expectedUri.ToString(), resultUri.ToString()); } - Uri NewUri(string url) - { - return new Uri(url, url.StartsWith("http:") ? UriKind.Absolute : UriKind.Relative); - } - - // [TestCase("/", "/", "/")] [TestCase("/", "/foo", "/foo")] [TestCase("/", "~/foo", "/foo")] @@ -103,15 +89,18 @@ namespace Umbraco.Tests.Misc [TestCase("/vdir", "/foo", "/vdir/foo")] [TestCase("/vdir", "/foo/", "/vdir/foo/")] [TestCase("/vdir", "~/foo", "/vdir/foo")] - public void Uri_To_Absolute(string virtualPath, string sourceUrl, string expectedUrl) { - UriUtility.SetAppDomainAppVirtualPath(virtualPath); - var resultUrl = UriUtility.ToAbsolute(sourceUrl); + // Arrange + var uriUtility = BuildUriUtility(virtualPath); + + // Act + var resultUrl = uriUtility.ToAbsolute(sourceUrl); + + // Assert Assert.AreEqual(expectedUrl, resultUrl); } - // [TestCase("/", "/", "/")] [TestCase("/", "/foo", "/foo")] [TestCase("/", "/foo/", "/foo/")] @@ -119,12 +108,23 @@ namespace Umbraco.Tests.Misc [TestCase("/vdir", "/vdir/", "/")] [TestCase("/vdir", "/vdir/foo", "/foo")] [TestCase("/vdir", "/vdir/foo/", "/foo/")] - public void Url_To_App_Relative(string virtualPath, string sourceUrl, string expectedUrl) { - UriUtility.SetAppDomainAppVirtualPath(virtualPath); - var resultUrl = UriUtility.ToAppRelative(sourceUrl); + // Arrange + var uriUtility = BuildUriUtility(virtualPath); + + // Act + var resultUrl = uriUtility.ToAppRelative(sourceUrl); + + // Assert Assert.AreEqual(expectedUrl, resultUrl); } + + private UriUtility BuildUriUtility(string virtualPath) + { + var mockHostingEnvironment = new Mock(); + mockHostingEnvironment.Setup(x => x.ApplicationVirtualPath).Returns(virtualPath); + return new UriUtility(mockHostingEnvironment.Object); + } } } diff --git a/src/Umbraco.Tests.UnitTests/Umbraco.Tests.Common/Builders/XmlDocumentBuilderTests.cs b/src/Umbraco.Tests.UnitTests/Umbraco.Tests.Common/Builders/XmlDocumentBuilderTests.cs index 0c77cd3222..64f305edd8 100644 --- a/src/Umbraco.Tests.UnitTests/Umbraco.Tests.Common/Builders/XmlDocumentBuilderTests.cs +++ b/src/Umbraco.Tests.UnitTests/Umbraco.Tests.Common/Builders/XmlDocumentBuilderTests.cs @@ -1,5 +1,5 @@ using NUnit.Framework; -using Umbraco.Tests.Common; +using Umbraco.Tests.Common.Builders; namespace Umbraco.Tests.UnitTests.Umbraco.Tests.Common.Builders { diff --git a/src/Umbraco.Tests/Umbraco.Tests.csproj b/src/Umbraco.Tests/Umbraco.Tests.csproj index afd82dbe75..fbd69e0568 100644 --- a/src/Umbraco.Tests/Umbraco.Tests.csproj +++ b/src/Umbraco.Tests/Umbraco.Tests.csproj @@ -471,7 +471,6 @@ -