Skip to content

Commit

Permalink
Fixup merge conflict after the first PR from Andy now merged in
Browse files Browse the repository at this point in the history
# Conflicts:
#	Our.Umbraco.TagHelpers/Configuration/OurUmbracoTagHelpersConfiguration.cs
  • Loading branch information
Warren Buckley committed Oct 17, 2022
2 parents ae32fd8 + 1611f8c commit 9170a6c
Show file tree
Hide file tree
Showing 6 changed files with 257 additions and 31 deletions.
39 changes: 29 additions & 10 deletions Our.Umbraco.TagHelpers.Tests/InlineSvgTagHelperTests.cs
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,7 @@
using Microsoft.Extensions.Options;
using Moq;
using NUnit.Framework;
using Our.Umbraco.TagHelpers.Configuration;
using System;
using System.Collections.Generic;
using System.IO;
Expand All @@ -20,6 +21,7 @@ public class InlineSvgTagHelperTests
{
private TagHelperContext _context = null!;
private TagHelperOutput _output = null!;
private IOptions<OurUmbracoTagHelpersConfiguration> _settings = null!;

[SetUp]
public void Setup()
Expand All @@ -36,12 +38,25 @@ public void Setup()
content.SetContent("Something else");
return Task.FromResult<TagHelperContent>(content);
});

var settings = new OurUmbracoTagHelpersConfiguration()
{
OurSVG =
{
Cache = false,
EnsureViewBox = false,
CacheMinutes = 180
}
};
_settings = Options.Create(settings);

}

[Test]
public void NoOutputIfNoMediaOrFileSet()
{
var tagHelper = new InlineSvgTagHelper(null, null, null);

var tagHelper = new InlineSvgTagHelper(null, null, null, _settings, null);

tagHelper.Process(_context, _output);

Expand All @@ -52,7 +67,7 @@ public void NoOutputIfNoMediaOrFileSet()
public void NoOutputIfBothMediaAndFileSet()
{
var umbContent = Mock.Of<IPublishedContent>(c => c.ContentType.ItemType == PublishedItemType.Media);
var tagHelper = new InlineSvgTagHelper(null, null, null)
var tagHelper = new InlineSvgTagHelper(null, null, null, _settings, null)
{
FileSource = "test.svg",
MediaItem = umbContent
Expand All @@ -66,7 +81,7 @@ public void NoOutputIfBothMediaAndFileSet()
[Test]
public void NoOutputIfFileNotSvg()
{
var tagHelper = new InlineSvgTagHelper(null, null, null)
var tagHelper = new InlineSvgTagHelper(null, null, null, _settings, null)
{
FileSource = "test.notsvg"
};
Expand All @@ -82,7 +97,7 @@ public void NoOutputIfFileNotFound()
var fileProvider = new Mock<IFileProvider>();
fileProvider.Setup(p => p.GetFileInfo(It.IsAny<string>())).Returns(Mock.Of<IFileInfo>(f => !f.Exists));
var hostEnv = Mock.Of<IWebHostEnvironment>(e => e.WebRootFileProvider == fileProvider.Object);
var tagHelper = new InlineSvgTagHelper(null, hostEnv, null)
var tagHelper = new InlineSvgTagHelper(null, hostEnv, null, _settings, null)
{
FileSource = "test.svg"
};
Expand All @@ -98,7 +113,7 @@ public void ExpectedOutputIfValidFile()
var fileProvider = new Mock<IFileProvider>();
fileProvider.Setup(p => p.GetFileInfo(It.IsAny<string>())).Returns(Mock.Of<IFileInfo>(f => f.Exists && f.CreateReadStream() == new MemoryStream(Encoding.UTF8.GetBytes("test svg"))));
var hostEnv = Mock.Of<IWebHostEnvironment>(e => e.WebRootFileProvider == fileProvider.Object);
var tagHelper = new InlineSvgTagHelper(null, hostEnv, null)
var tagHelper = new InlineSvgTagHelper(null, hostEnv, null, _settings, null)
{
FileSource = "test.svg"
};
Expand All @@ -116,7 +131,7 @@ public void NoOutputIfMediaUrlNull()
{
var urlProvider = new Mock<IPublishedUrlProvider>();
urlProvider.Setup(p => p.GetMediaUrl(It.IsAny<IPublishedContent>(), It.IsAny<UrlMode>(), It.IsAny<string>(), It.IsAny<string>(), It.IsAny<Uri>())).Returns((string)null!);
var tagHelper = new InlineSvgTagHelper(null, null, urlProvider.Object)
var tagHelper = new InlineSvgTagHelper(null, null, urlProvider.Object, _settings, null)
{
MediaItem = Mock.Of<IPublishedContent>(c => c.ContentType.ItemType == PublishedItemType.Media)
};
Expand All @@ -132,7 +147,7 @@ public void NoOutputIfMediaNotSvg()
var umbContent = Mock.Of<IPublishedContent>(c => c.ContentType.ItemType == PublishedItemType.Media);
var urlProvider = new Mock<IPublishedUrlProvider>();
urlProvider.Setup(p => p.GetMediaUrl(umbContent, It.IsAny<UrlMode>(), It.IsAny<string>(), It.IsAny<string>(), It.IsAny<Uri>())).Returns("test.notsvg");
var tagHelper = new InlineSvgTagHelper(null, null, urlProvider.Object)
var tagHelper = new InlineSvgTagHelper(null, null, urlProvider.Object, _settings, null)
{
MediaItem = umbContent
};
Expand All @@ -152,7 +167,9 @@ public void NoOutputIfMediaNotFound()
var tagHelper = new InlineSvgTagHelper(
new MediaFileManager(fileSystem, null, null, null, null, Mock.Of<IOptions<ContentSettings>>()),
null,
urlProvider.Object)
urlProvider.Object,
_settings,
null)
{
MediaItem = umbContent
};
Expand All @@ -172,7 +189,9 @@ public void ExpectedOutputIfValidMedia()
var tagHelper = new InlineSvgTagHelper(
new MediaFileManager(fileSystem, null, null, null, null, Mock.Of<IOptions<ContentSettings>>()),
null,
urlProvider.Object)
urlProvider.Object,
_settings,
null)
{
MediaItem = umbContent
};
Expand All @@ -193,7 +212,7 @@ public void SanitizesJavascript()
.Setup(p => p.GetFileInfo(It.IsAny<string>()))
.Returns(Mock.Of<IFileInfo>(f => f.Exists && f.CreateReadStream() == new MemoryStream(Encoding.UTF8.GetBytes("<a xlink:href=\"javascript:alert('test');\">Click here</a><script attr=\"test\">test</script>end"))));
var hostEnv = Mock.Of<IWebHostEnvironment>(e => e.WebRootFileProvider == fileProvider.Object);
var tagHelper = new InlineSvgTagHelper(null, hostEnv, null)
var tagHelper = new InlineSvgTagHelper(null, hostEnv, null, _settings, null)
{
FileSource = "test.svg"
};
Expand Down
20 changes: 20 additions & 0 deletions Our.Umbraco.TagHelpers/Composing/InlineSvgTagHelperComposer.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
using Our.Umbraco.TagHelpers.Notifications;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using Umbraco.Cms.Core.Composing;
using Umbraco.Cms.Core.DependencyInjection;
using Umbraco.Cms.Core.Notifications;

namespace Our.Umbraco.TagHelpers.Composing
{
public class InlineSvgTagHelperComposer : IComposer
{
public void Compose(IUmbracoBuilder builder)
{
builder.AddNotificationHandler<MediaSavedNotification, InlineSvgTagHelperNotifications>();
}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -4,26 +4,39 @@ namespace Our.Umbraco.TagHelpers.Configuration
{
public class OurUmbracoTagHelpersConfiguration
{
public ImgTagHelperConfiguration OurImg { get; set; } = new ImgTagHelperConfiguration();
public InlineSvgTagHelperConfiguration OurSVG { get; set; } = new InlineSvgTagHelperConfiguration();
public ImgTagHelperConfiguration OurImg { get; set; } = new ImgTagHelperConfiguration();
}
public class ImgTagHelperConfiguration

public class InlineSvgTagHelperConfiguration
{
public bool EnsureViewBox { get; set; } = false;
public bool Cache { get; set; } = false;
public int CacheMinutes { get; set; } = 180;
}

public class ImgTagHelperConfiguration
{
/// <summary>
/// Define the typical responsive breakpoints (S,M,L,XL,XXL) in which your website uses during screen resize
/// </summary>
public MediaQuerySizes MediaQueries { get; set; } = new MediaQuerySizes();

/// <summary>
/// If true, let the browser handle image lazy loading, otherwise disable to use a 3rd party JavaScript based library
/// </summary>
public bool UseNativeLazyLoading { get; set; } = true;

/// <summary>
/// Applicable if UseNativeLazyLoading is false
/// </summary>
public string LazyLoadCssClass { get; set; } = "lazyload";

/// <summary>
/// Applicable if UseNativeLazyLoading is false
/// </summary>
public ImagePlaceholderType LazyLoadPlaceholder { get; set; } = ImagePlaceholderType.SVG;

/// <summary>
/// Applicable if UseNativeLazyLoading is false & LazyLoadPlaceholder is LowQualityImage
/// </summary>
Expand Down
Loading

0 comments on commit 9170a6c

Please sign in to comment.