diff --git a/src/Umbraco.Tests.Common/Builders/XmlDocumentBuilder.cs b/src/Umbraco.Tests.Common/Builders/XmlDocumentBuilder.cs new file mode 100644 index 0000000000..d5250c3739 --- /dev/null +++ b/src/Umbraco.Tests.Common/Builders/XmlDocumentBuilder.cs @@ -0,0 +1,125 @@ +using System.Xml; + +namespace Umbraco.Tests.Common.Builders +{ + 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/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/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/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/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.Core/Xml/XmlHelperTests.cs b/src/Umbraco.Tests.UnitTests/Umbraco.Core/Xml/XmlHelperTests.cs new file mode 100644 index 0000000000..495ca0186d --- /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.Builders; + +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..64f305edd8 --- /dev/null +++ b/src/Umbraco.Tests.UnitTests/Umbraco.Tests.Common/Builders/XmlDocumentBuilderTests.cs @@ -0,0 +1,27 @@ +using NUnit.Framework; +using Umbraco.Tests.Common.Builders; + +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 a832d84ef1..82c734dffc 100644 --- a/src/Umbraco.Tests/Umbraco.Tests.csproj +++ b/src/Umbraco.Tests/Umbraco.Tests.csproj @@ -178,8 +178,6 @@ - - @@ -370,7 +368,6 @@ - @@ -456,7 +453,6 @@ - @@ -475,7 +471,6 @@ -