diff --git a/Filtration.Parser.Tests/Services/TestItemFilterBlockTranslator.cs b/Filtration.Parser.Tests/Services/TestItemFilterBlockTranslator.cs index 0ee32fb..b06b967 100644 --- a/Filtration.Parser.Tests/Services/TestItemFilterBlockTranslator.cs +++ b/Filtration.Parser.Tests/Services/TestItemFilterBlockTranslator.cs @@ -119,7 +119,7 @@ namespace Filtration.Parser.Tests.Services } [Test] - public void TranslateStringToItemFilterBlock_NoBlockGroupComment_CallsBlockGroupHierarchyBuilder() + public void TranslateStringToItemFilterBlock_NoBlockGroupComment_DoesNotCallBlockGroupHierarchyBuilder() { // Arrange var inputString = "Show" + Environment.NewLine; @@ -139,7 +139,6 @@ namespace Filtration.Parser.Tests.Services var inputString = "Show #" + Environment.NewLine; // Act - _testUtility.MockBlockGroupHierarchyBuilder.Setup(b => b.IntegrateStringListIntoBlockGroupHierarchy(It.IsAny>())).Verifiable(); _testUtility.Translator.TranslateStringToItemFilterBlock(inputString, null); // Assert @@ -154,7 +153,31 @@ namespace Filtration.Parser.Tests.Services var testBlockGroup = new ItemFilterBlockGroup("zzzzz", null); // Act - _testUtility.MockBlockGroupHierarchyBuilder.Setup(b => b.IntegrateStringListIntoBlockGroupHierarchy(It.IsAny>())).Returns(testBlockGroup).Verifiable(); + _testUtility.MockBlockGroupHierarchyBuilder + .Setup(b => b.IntegrateStringListIntoBlockGroupHierarchy(It.Is>(s => s.Contains("Test Block Group") && s.Contains("Test Sub Block Group") && s.Contains("Test Another Block Group")))) + .Returns(testBlockGroup) + .Verifiable(); + + var result = _testUtility.Translator.TranslateStringToItemFilterBlock(inputString, null); + + // Assert + Assert.AreEqual(testBlockGroup, result.BlockGroup); + _testUtility.MockBlockGroupHierarchyBuilder.Verify(); + } + + [Test] + public void TranslateStringToItemFilterBlock_BlockGroupComment_NoSpacingAroundHyphens_SetsBlockItemGroupCorrectly() + { + // Arrange + var inputString = "Show # AAA-BBB-CCC" + Environment.NewLine; + var testBlockGroup = new ItemFilterBlockGroup("zzzzz", null); + + // Act + _testUtility.MockBlockGroupHierarchyBuilder + .Setup(b => b.IntegrateStringListIntoBlockGroupHierarchy(It.Is>(s => s.Contains("AAA-BBB-CCC")))) + .Returns(testBlockGroup) + .Verifiable(); + var result = _testUtility.Translator.TranslateStringToItemFilterBlock(inputString, null); // Assert diff --git a/Filtration.Parser/Services/ItemFilterBlockTranslator.cs b/Filtration.Parser/Services/ItemFilterBlockTranslator.cs index d2b9bcf..23553a9 100644 --- a/Filtration.Parser/Services/ItemFilterBlockTranslator.cs +++ b/Filtration.Parser/Services/ItemFilterBlockTranslator.cs @@ -56,7 +56,7 @@ namespace Filtration.Parser.Services } var adjustedLine = line.Replace("#", " # "); - var trimmedLine = adjustedLine.TrimStart(' ').TrimEnd(' '); + var trimmedLine = adjustedLine.Trim(); var spaceOrEndOfLinePos = trimmedLine.IndexOf(" ", StringComparison.Ordinal) > 0 ? trimmedLine.IndexOf(" ", StringComparison.Ordinal) : trimmedLine.Length; @@ -395,7 +395,10 @@ namespace Filtration.Parser.Services if (blockGroupStart <= 0) return; var blockGroupText = inputString.Substring(blockGroupStart + 1); - var blockGroups = blockGroupText.Split('-').ToList(); + var blockGroups = blockGroupText.Split(new[] { " - " }, StringSplitOptions.RemoveEmptyEntries) + .Select(s => s.Trim()) + .ToList(); + if (blockGroups.Count(b => !string.IsNullOrEmpty(b.Trim())) > 0) { block.BlockGroup = _blockGroupHierarchyBuilder.IntegrateStringListIntoBlockGroupHierarchy(blockGroups);