From dc7b83ca6c789e83f3f9039eb3eaa3a6cdd72ec5 Mon Sep 17 00:00:00 2001 From: Mike Date: Mon, 8 Jan 2018 17:30:11 +0000 Subject: [PATCH 1/3] Add initial test fix for SimilarNodeName when a node has no name. --- .../Persistence/Repositories/SimilarNodeName.cs | 6 ++++++ .../Persistence/Repositories/SimilarNodeNameTests.cs | 3 ++- 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/src/Umbraco.Core/Persistence/Repositories/SimilarNodeName.cs b/src/Umbraco.Core/Persistence/Repositories/SimilarNodeName.cs index 371f73b27f..df31ae894a 100644 --- a/src/Umbraco.Core/Persistence/Repositories/SimilarNodeName.cs +++ b/src/Umbraco.Core/Persistence/Repositories/SimilarNodeName.cs @@ -20,6 +20,12 @@ namespace Umbraco.Core.Persistence.Repositories var name = Name; + // cater for instances where node has no name. + if(name.Length == 0) + { + return _numPos; + } + if (name[name.Length - 1] != ')') return _numPos = -1; diff --git a/src/Umbraco.Tests/Persistence/Repositories/SimilarNodeNameTests.cs b/src/Umbraco.Tests/Persistence/Repositories/SimilarNodeNameTests.cs index 72f3e39874..275398091b 100644 --- a/src/Umbraco.Tests/Persistence/Repositories/SimilarNodeNameTests.cs +++ b/src/Umbraco.Tests/Persistence/Repositories/SimilarNodeNameTests.cs @@ -24,7 +24,8 @@ namespace Umbraco.Tests.Persistence.Repositories [TestCase("Alpha (10)", "Alpha (2)", +1)] // this is the real stuff [TestCase("Kilo", "Golf (2)", +1)] [TestCase("Kilo (1)", "Golf (2)", +1)] - public void ComparerTest(string name1, string name2, int expected) + [TestCase("", "", 0)] + public void ComparerTest(string name1, string name2, int expected) { var comparer = new SimilarNodeName.Comparer(); From dcfb8b94d82076ada8b37372ff572322e8ecbef9 Mon Sep 17 00:00:00 2001 From: Mike Date: Wed, 10 Jan 2018 20:44:30 +0000 Subject: [PATCH 2/3] Refactor SimilarNodeName to account for null nodeName values. --- src/Umbraco.Core/Persistence/Repositories/SimilarNodeName.cs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/Umbraco.Core/Persistence/Repositories/SimilarNodeName.cs b/src/Umbraco.Core/Persistence/Repositories/SimilarNodeName.cs index df31ae894a..4561edb972 100644 --- a/src/Umbraco.Core/Persistence/Repositories/SimilarNodeName.cs +++ b/src/Umbraco.Core/Persistence/Repositories/SimilarNodeName.cs @@ -21,7 +21,7 @@ namespace Umbraco.Core.Persistence.Repositories var name = Name; // cater for instances where node has no name. - if(name.Length == 0) + if(string.IsNullOrWhiteSpace(name)) { return _numPos; } @@ -112,7 +112,7 @@ namespace Umbraco.Core.Persistence.Repositories } } - return uniqueing ? string.Concat(nodeName, " (", uniqueNumber.ToString(), ")") : nodeName; + return uniqueing || string.IsNullOrWhiteSpace(nodeName) ? string.Concat(nodeName, " (", uniqueNumber.ToString(), ")") : nodeName; } } } \ No newline at end of file From 9f6e6e4701bf91561e68104e7f28a00a9f777728 Mon Sep 17 00:00:00 2001 From: Mike Date: Wed, 10 Jan 2018 20:58:10 +0000 Subject: [PATCH 3/3] Add tests to SimilarNodeNameTests to check for null and "" values. --- .../Persistence/Repositories/SimilarNodeNameTests.cs | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/Umbraco.Tests/Persistence/Repositories/SimilarNodeNameTests.cs b/src/Umbraco.Tests/Persistence/Repositories/SimilarNodeNameTests.cs index 275398091b..e0e650fa66 100644 --- a/src/Umbraco.Tests/Persistence/Repositories/SimilarNodeNameTests.cs +++ b/src/Umbraco.Tests/Persistence/Repositories/SimilarNodeNameTests.cs @@ -25,6 +25,7 @@ namespace Umbraco.Tests.Persistence.Repositories [TestCase("Kilo", "Golf (2)", +1)] [TestCase("Kilo (1)", "Golf (2)", +1)] [TestCase("", "", 0)] + [TestCase(null, null, 0)] public void ComparerTest(string name1, string name2, int expected) { var comparer = new SimilarNodeName.Comparer(); @@ -77,7 +78,9 @@ namespace Umbraco.Tests.Persistence.Repositories [TestCase(0, "Alpha", "Alpha (3)")] [TestCase(0, "Kilo (1)", "Kilo (1) (1)")] // though... we might consider "Kilo (2)" [TestCase(6, "Kilo (1)", "Kilo (1)")] // because of the id - public void Test(int nodeId, string nodeName, string expected) + [TestCase(0, "", " (1)")] + [TestCase(0, null, " (1)")] + public void Test(int nodeId, string nodeName, string expected) { var names = new[] {