Skip to content

Commit 9170a6c

Browse files
author
Warren Buckley
committed
Fixup merge conflict after the first PR from Andy now merged in
# Conflicts: # Our.Umbraco.TagHelpers/Configuration/OurUmbracoTagHelpersConfiguration.cs
2 parents ae32fd8 + 1611f8c commit 9170a6c

File tree

6 files changed

+257
-31
lines changed

6 files changed

+257
-31
lines changed

Our.Umbraco.TagHelpers.Tests/InlineSvgTagHelperTests.cs

Lines changed: 29 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
using Microsoft.Extensions.Options;
55
using Moq;
66
using NUnit.Framework;
7+
using Our.Umbraco.TagHelpers.Configuration;
78
using System;
89
using System.Collections.Generic;
910
using System.IO;
@@ -20,6 +21,7 @@ public class InlineSvgTagHelperTests
2021
{
2122
private TagHelperContext _context = null!;
2223
private TagHelperOutput _output = null!;
24+
private IOptions<OurUmbracoTagHelpersConfiguration> _settings = null!;
2325

2426
[SetUp]
2527
public void Setup()
@@ -36,12 +38,25 @@ public void Setup()
3638
content.SetContent("Something else");
3739
return Task.FromResult<TagHelperContent>(content);
3840
});
41+
42+
var settings = new OurUmbracoTagHelpersConfiguration()
43+
{
44+
OurSVG =
45+
{
46+
Cache = false,
47+
EnsureViewBox = false,
48+
CacheMinutes = 180
49+
}
50+
};
51+
_settings = Options.Create(settings);
52+
3953
}
4054

4155
[Test]
4256
public void NoOutputIfNoMediaOrFileSet()
4357
{
44-
var tagHelper = new InlineSvgTagHelper(null, null, null);
58+
59+
var tagHelper = new InlineSvgTagHelper(null, null, null, _settings, null);
4560

4661
tagHelper.Process(_context, _output);
4762

@@ -52,7 +67,7 @@ public void NoOutputIfNoMediaOrFileSet()
5267
public void NoOutputIfBothMediaAndFileSet()
5368
{
5469
var umbContent = Mock.Of<IPublishedContent>(c => c.ContentType.ItemType == PublishedItemType.Media);
55-
var tagHelper = new InlineSvgTagHelper(null, null, null)
70+
var tagHelper = new InlineSvgTagHelper(null, null, null, _settings, null)
5671
{
5772
FileSource = "test.svg",
5873
MediaItem = umbContent
@@ -66,7 +81,7 @@ public void NoOutputIfBothMediaAndFileSet()
6681
[Test]
6782
public void NoOutputIfFileNotSvg()
6883
{
69-
var tagHelper = new InlineSvgTagHelper(null, null, null)
84+
var tagHelper = new InlineSvgTagHelper(null, null, null, _settings, null)
7085
{
7186
FileSource = "test.notsvg"
7287
};
@@ -82,7 +97,7 @@ public void NoOutputIfFileNotFound()
8297
var fileProvider = new Mock<IFileProvider>();
8398
fileProvider.Setup(p => p.GetFileInfo(It.IsAny<string>())).Returns(Mock.Of<IFileInfo>(f => !f.Exists));
8499
var hostEnv = Mock.Of<IWebHostEnvironment>(e => e.WebRootFileProvider == fileProvider.Object);
85-
var tagHelper = new InlineSvgTagHelper(null, hostEnv, null)
100+
var tagHelper = new InlineSvgTagHelper(null, hostEnv, null, _settings, null)
86101
{
87102
FileSource = "test.svg"
88103
};
@@ -98,7 +113,7 @@ public void ExpectedOutputIfValidFile()
98113
var fileProvider = new Mock<IFileProvider>();
99114
fileProvider.Setup(p => p.GetFileInfo(It.IsAny<string>())).Returns(Mock.Of<IFileInfo>(f => f.Exists && f.CreateReadStream() == new MemoryStream(Encoding.UTF8.GetBytes("test svg"))));
100115
var hostEnv = Mock.Of<IWebHostEnvironment>(e => e.WebRootFileProvider == fileProvider.Object);
101-
var tagHelper = new InlineSvgTagHelper(null, hostEnv, null)
116+
var tagHelper = new InlineSvgTagHelper(null, hostEnv, null, _settings, null)
102117
{
103118
FileSource = "test.svg"
104119
};
@@ -116,7 +131,7 @@ public void NoOutputIfMediaUrlNull()
116131
{
117132
var urlProvider = new Mock<IPublishedUrlProvider>();
118133
urlProvider.Setup(p => p.GetMediaUrl(It.IsAny<IPublishedContent>(), It.IsAny<UrlMode>(), It.IsAny<string>(), It.IsAny<string>(), It.IsAny<Uri>())).Returns((string)null!);
119-
var tagHelper = new InlineSvgTagHelper(null, null, urlProvider.Object)
134+
var tagHelper = new InlineSvgTagHelper(null, null, urlProvider.Object, _settings, null)
120135
{
121136
MediaItem = Mock.Of<IPublishedContent>(c => c.ContentType.ItemType == PublishedItemType.Media)
122137
};
@@ -132,7 +147,7 @@ public void NoOutputIfMediaNotSvg()
132147
var umbContent = Mock.Of<IPublishedContent>(c => c.ContentType.ItemType == PublishedItemType.Media);
133148
var urlProvider = new Mock<IPublishedUrlProvider>();
134149
urlProvider.Setup(p => p.GetMediaUrl(umbContent, It.IsAny<UrlMode>(), It.IsAny<string>(), It.IsAny<string>(), It.IsAny<Uri>())).Returns("test.notsvg");
135-
var tagHelper = new InlineSvgTagHelper(null, null, urlProvider.Object)
150+
var tagHelper = new InlineSvgTagHelper(null, null, urlProvider.Object, _settings, null)
136151
{
137152
MediaItem = umbContent
138153
};
@@ -152,7 +167,9 @@ public void NoOutputIfMediaNotFound()
152167
var tagHelper = new InlineSvgTagHelper(
153168
new MediaFileManager(fileSystem, null, null, null, null, Mock.Of<IOptions<ContentSettings>>()),
154169
null,
155-
urlProvider.Object)
170+
urlProvider.Object,
171+
_settings,
172+
null)
156173
{
157174
MediaItem = umbContent
158175
};
@@ -172,7 +189,9 @@ public void ExpectedOutputIfValidMedia()
172189
var tagHelper = new InlineSvgTagHelper(
173190
new MediaFileManager(fileSystem, null, null, null, null, Mock.Of<IOptions<ContentSettings>>()),
174191
null,
175-
urlProvider.Object)
192+
urlProvider.Object,
193+
_settings,
194+
null)
176195
{
177196
MediaItem = umbContent
178197
};
@@ -193,7 +212,7 @@ public void SanitizesJavascript()
193212
.Setup(p => p.GetFileInfo(It.IsAny<string>()))
194213
.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"))));
195214
var hostEnv = Mock.Of<IWebHostEnvironment>(e => e.WebRootFileProvider == fileProvider.Object);
196-
var tagHelper = new InlineSvgTagHelper(null, hostEnv, null)
215+
var tagHelper = new InlineSvgTagHelper(null, hostEnv, null, _settings, null)
197216
{
198217
FileSource = "test.svg"
199218
};
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
using Our.Umbraco.TagHelpers.Notifications;
2+
using System;
3+
using System.Collections.Generic;
4+
using System.Linq;
5+
using System.Text;
6+
using System.Threading.Tasks;
7+
using Umbraco.Cms.Core.Composing;
8+
using Umbraco.Cms.Core.DependencyInjection;
9+
using Umbraco.Cms.Core.Notifications;
10+
11+
namespace Our.Umbraco.TagHelpers.Composing
12+
{
13+
public class InlineSvgTagHelperComposer : IComposer
14+
{
15+
public void Compose(IUmbracoBuilder builder)
16+
{
17+
builder.AddNotificationHandler<MediaSavedNotification, InlineSvgTagHelperNotifications>();
18+
}
19+
}
20+
}

Our.Umbraco.TagHelpers/Configuration/OurUmbracoTagHelpersConfiguration.cs

Lines changed: 15 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,26 +4,39 @@ namespace Our.Umbraco.TagHelpers.Configuration
44
{
55
public class OurUmbracoTagHelpersConfiguration
66
{
7-
public ImgTagHelperConfiguration OurImg { get; set; } = new ImgTagHelperConfiguration();
7+
public InlineSvgTagHelperConfiguration OurSVG { get; set; } = new InlineSvgTagHelperConfiguration();
8+
public ImgTagHelperConfiguration OurImg { get; set; } = new ImgTagHelperConfiguration();
89
}
9-
public class ImgTagHelperConfiguration
10+
11+
public class InlineSvgTagHelperConfiguration
12+
{
13+
public bool EnsureViewBox { get; set; } = false;
14+
public bool Cache { get; set; } = false;
15+
public int CacheMinutes { get; set; } = 180;
16+
}
17+
18+
public class ImgTagHelperConfiguration
1019
{
1120
/// <summary>
1221
/// Define the typical responsive breakpoints (S,M,L,XL,XXL) in which your website uses during screen resize
1322
/// </summary>
1423
public MediaQuerySizes MediaQueries { get; set; } = new MediaQuerySizes();
24+
1525
/// <summary>
1626
/// If true, let the browser handle image lazy loading, otherwise disable to use a 3rd party JavaScript based library
1727
/// </summary>
1828
public bool UseNativeLazyLoading { get; set; } = true;
29+
1930
/// <summary>
2031
/// Applicable if UseNativeLazyLoading is false
2132
/// </summary>
2233
public string LazyLoadCssClass { get; set; } = "lazyload";
34+
2335
/// <summary>
2436
/// Applicable if UseNativeLazyLoading is false
2537
/// </summary>
2638
public ImagePlaceholderType LazyLoadPlaceholder { get; set; } = ImagePlaceholderType.SVG;
39+
2740
/// <summary>
2841
/// Applicable if UseNativeLazyLoading is false & LazyLoadPlaceholder is LowQualityImage
2942
/// </summary>

0 commit comments

Comments
 (0)