Adds UdiParserTests
This commit is contained in:
@@ -13,8 +13,9 @@ using System;
|
||||
using System.Linq;
|
||||
using Umbraco.Core.Models;
|
||||
|
||||
namespace Umbraco.Tests.Web
|
||||
namespace Umbraco.Tests.Templates
|
||||
{
|
||||
|
||||
[TestFixture]
|
||||
public class MediaParserTests
|
||||
{
|
||||
@@ -46,7 +47,7 @@ namespace Umbraco.Tests.Web
|
||||
public void Ensure_Image_Sources()
|
||||
{
|
||||
//setup a mock url provider which we'll use for testing
|
||||
|
||||
|
||||
var mediaType = new PublishedContentType(777, "image", PublishedItemType.Media, Enumerable.Empty<string>(), Enumerable.Empty<PublishedPropertyType>(), ContentVariation.Nothing);
|
||||
var media = new Mock<IPublishedContent>();
|
||||
media.Setup(x => x.ContentType).Returns(mediaType);
|
||||
@@ -91,7 +92,7 @@ namespace Umbraco.Tests.Web
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
28
src/Umbraco.Tests/Templates/UdiParserTests.cs
Normal file
28
src/Umbraco.Tests/Templates/UdiParserTests.cs
Normal file
@@ -0,0 +1,28 @@
|
||||
using NUnit.Framework;
|
||||
using Umbraco.Web.Templates;
|
||||
using System.Linq;
|
||||
using Umbraco.Core;
|
||||
|
||||
namespace Umbraco.Tests.Templates
|
||||
{
|
||||
[TestFixture]
|
||||
public class UdiParserTests
|
||||
{
|
||||
[Test]
|
||||
public void Returns_Udi_From_Data_Udi_Html_Attributes()
|
||||
{
|
||||
var input = @"<p>
|
||||
<div>
|
||||
<img src='/media/12312.jpg' data-udi='umb://media/D4B18427A1544721B09AC7692F35C264' />
|
||||
</div>
|
||||
</p><p><img src='/media/234234.jpg' data-udi=""umb://media-type/B726D735E4C446D58F703F3FBCFC97A5"" /></p>";
|
||||
|
||||
var parser = new UdiParser();
|
||||
var result = parser.ParseUdisFromDataAttributes(input).ToList();
|
||||
Assert.AreEqual(2, result.Count);
|
||||
Assert.AreEqual(Udi.Parse("umb://media/D4B18427A1544721B09AC7692F35C264"), result[0]);
|
||||
Assert.AreEqual(Udi.Parse("umb://media-type/B726D735E4C446D58F703F3FBCFC97A5"), result[1]);
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
@@ -159,6 +159,7 @@
|
||||
<Compile Include="Services\MemberGroupServiceTests.cs" />
|
||||
<Compile Include="Services\MediaTypeServiceTests.cs" />
|
||||
<Compile Include="Services\PropertyValidationServiceTests.cs" />
|
||||
<Compile Include="Templates\UdiParserTests.cs" />
|
||||
<Compile Include="TestHelpers\RandomIdRamDirectory.cs" />
|
||||
<Compile Include="Testing\Objects\TestDataSource.cs" />
|
||||
<Compile Include="Published\PublishedSnapshotTestObjects.cs" />
|
||||
@@ -255,7 +256,7 @@
|
||||
<Compile Include="Web\HealthChecks\HealthCheckResultsTests.cs" />
|
||||
<Compile Include="Web\HttpCookieExtensionsTests.cs" />
|
||||
<Compile Include="Web\InternalLinkParserTests.cs" />
|
||||
<Compile Include="Web\MediaParserTests.cs" />
|
||||
<Compile Include="Templates\MediaParserTests.cs" />
|
||||
<Compile Include="Web\Mvc\HtmlStringUtilitiesTests.cs" />
|
||||
<Compile Include="Web\ModelStateExtensionsTests.cs" />
|
||||
<Compile Include="Web\Mvc\RenderIndexActionSelectorAttributeTests.cs" />
|
||||
|
||||
@@ -13,21 +13,6 @@ using Umbraco.Web.Routing;
|
||||
|
||||
namespace Umbraco.Web.Templates
|
||||
{
|
||||
/// <summary>
|
||||
/// Parses out UDIs in strings
|
||||
/// </summary>
|
||||
public sealed class UdiParser
|
||||
{
|
||||
/// <summary>
|
||||
/// Parses out UDIs from an html string based on 'data-udi' html attributes
|
||||
/// </summary>
|
||||
/// <param name="text"></param>
|
||||
/// <returns></returns>
|
||||
public IEnumerable<Udi> ParseUdisFromDataAttributes(string text)
|
||||
{
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
public sealed class MediaParser
|
||||
{
|
||||
|
||||
34
src/Umbraco.Web/Templates/UdiParser.cs
Normal file
34
src/Umbraco.Web/Templates/UdiParser.cs
Normal file
@@ -0,0 +1,34 @@
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text.RegularExpressions;
|
||||
using Umbraco.Core;
|
||||
|
||||
namespace Umbraco.Web.Templates
|
||||
{
|
||||
/// <summary>
|
||||
/// Parses out UDIs in strings
|
||||
/// </summary>
|
||||
public sealed class UdiParser
|
||||
{
|
||||
private static readonly Regex DataUdiAttributeRegex = new Regex(@"data-udi=\\?(?:""|')(?<udi>umb://[A-z0-9\-]+/[A-z0-9]+)\\?(?:""|')",
|
||||
RegexOptions.Compiled | RegexOptions.CultureInvariant | RegexOptions.IgnoreCase);
|
||||
|
||||
/// <summary>
|
||||
/// Parses out UDIs from an html string based on 'data-udi' html attributes
|
||||
/// </summary>
|
||||
/// <param name="text"></param>
|
||||
/// <returns></returns>
|
||||
public IEnumerable<Udi> ParseUdisFromDataAttributes(string text)
|
||||
{
|
||||
var matches = DataUdiAttributeRegex.Matches(text);
|
||||
if (matches.Count == 0)
|
||||
yield break;
|
||||
|
||||
foreach (Match match in matches)
|
||||
{
|
||||
if (match.Groups.Count == 2 && Udi.TryParse(match.Groups[1].Value, out var udi))
|
||||
yield return udi;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -249,6 +249,7 @@
|
||||
<Compile Include="Models\TemplateQuery\OperatorFactory.cs" />
|
||||
<Compile Include="Templates\InternalLinkParser.cs" />
|
||||
<Compile Include="Templates\MediaParser.cs" />
|
||||
<Compile Include="Templates\UdiParser.cs" />
|
||||
<Compile Include="Templates\UrlParser.cs" />
|
||||
<Compile Include="UmbracoContextFactory.cs" />
|
||||
<Compile Include="UmbracoContextReference.cs" />
|
||||
|
||||
Reference in New Issue
Block a user