From a55448707a75577207bdaf9da798c63e8109d0b8 Mon Sep 17 00:00:00 2001 From: Jamie Pollock Date: Tue, 23 Jan 2024 17:50:43 -0500 Subject: [PATCH] feat (Tests): adds tests for default image THR --- .../DefaultImageTagHelperRendererTests.cs | 104 ++++++++++++++++++ 1 file changed, 104 insertions(+) create mode 100644 tests/Rhythm.Drop.Web.Tests/TagHelperRenderers/Images/DefaultImageTagHelperRendererTests.cs diff --git a/tests/Rhythm.Drop.Web.Tests/TagHelperRenderers/Images/DefaultImageTagHelperRendererTests.cs b/tests/Rhythm.Drop.Web.Tests/TagHelperRenderers/Images/DefaultImageTagHelperRendererTests.cs new file mode 100644 index 0000000..52016b0 --- /dev/null +++ b/tests/Rhythm.Drop.Web.Tests/TagHelperRenderers/Images/DefaultImageTagHelperRendererTests.cs @@ -0,0 +1,104 @@ +namespace Rhythm.Drop.Web.Tests.TagHelperRenderers.Images; + +using Microsoft.AspNetCore.Razor.TagHelpers; +using Rhythm.Drop.Models.Images; +using Rhythm.Drop.Web.Infrastructure; +using Rhythm.Drop.Web.Infrastructure.TagHelperRenderers.Images; +using Rhythm.Drop.Web.TagHelperRenderers.Images; +using System.Threading.Tasks; + +[TestFixture] +public class DefaultImageTagHelperRendererTests : TagHelperRendererTestsBase +{ + [Test] + public async Task RenderAsync_With_No_Image_Returns_No_Output() + { + // arrange + var tagHelperRenderer = new DefaultDropImageTagHelperRenderer(); + var rendererContext = new DropImageTagHelperRendererContext(default, RenderMode.Default); + var context = CreateTagHelperContext(DefaultTagName); + var output = CreateTagHelperOutput(DefaultTagName); + + // act + await tagHelperRenderer.RenderAsync(rendererContext, context, output); + + // assert + Assert.Multiple(() => + { + Assert.That(output.TagName, Is.Not.EqualTo(DefaultTagName)); + Assert.That(output.Content.IsModified, Is.False); + }); + } + + [Test] + public async Task RenderAsync_With_Simple_Image_Returns_Output_With_Img_TagName() + { + // arrange + var tagHelperRenderer = new DefaultDropImageTagHelperRenderer(); + var image = new Image("/image.gif", "Test"); + var rendererContext = new DropImageTagHelperRendererContext(image, RenderMode.Default); + var context = CreateTagHelperContext(DefaultTagName); + var output = CreateTagHelperOutput(DefaultTagName); + + // act + await tagHelperRenderer.RenderAsync(rendererContext, context, output); + + // assert + Assert.Multiple(() => + { + Assert.That(output.TagName, Is.EqualTo("img")); + Assert.That(output.Content.IsModified, Is.False); + + Assert.That(output.Attributes, Has.One.Matches(x => x.Name == "src" && x.Value.ToString() == image.Url)); + Assert.That(output.Attributes, Has.One.Matches(x => x.Name == "alt" && x.Value.ToString() == image.AltText)); + }); + } + + public async Task RenderAsync_With_Simple_Image_And_Dimensions_Returns_Output_With_Img_TagName_And_Attributes() + { + // arrange + var tagHelperRenderer = new DefaultDropImageTagHelperRenderer(); + var image = new Image("/image.gif", "Test", 200, 200); + var rendererContext = new DropImageTagHelperRendererContext(image, RenderMode.Default); + var context = CreateTagHelperContext(DefaultTagName); + var output = CreateTagHelperOutput(DefaultTagName); + + // act + await tagHelperRenderer.RenderAsync(rendererContext, context, output); + + // assert + Assert.Multiple(() => + { + Assert.That(output.TagName, Is.EqualTo("img")); + Assert.That(output.Content.IsModified, Is.False); + + Assert.That(output.Attributes, Has.One.Matches(x => x.Name == "src" && x.Value.ToString() == image.Url)); + Assert.That(output.Attributes, Has.One.Matches(x => x.Name == "alt" && x.Value.ToString() == image.AltText)); + + Assert.That(output.Attributes, Has.One.Matches(x => x.Name == "width" && x.Value.ToString() == image.Width.ToString())); + Assert.That(output.Attributes, Has.One.Matches(x => x.Name == "height" && x.Value.ToString() == image.Height.ToString())); + }); + } + + + [Test] + public async Task RenderAsync_With_Image_That_Has_Sources_Returns_Output_With_Picture_TagName() + { + // arrange + var tagHelperRenderer = new DefaultDropImageTagHelperRenderer(); + var image = new Image("/image.gif", "Test", default, default, [new ImageSource("/image2.gif")]); + var rendererContext = new DropImageTagHelperRendererContext(image, RenderMode.Default); + var context = CreateTagHelperContext(DefaultTagName); + var output = CreateTagHelperOutput(DefaultTagName); + + // act + await tagHelperRenderer.RenderAsync(rendererContext, context, output); + + // assert + Assert.Multiple(() => + { + Assert.That(output.TagName, Is.EqualTo("picture")); + Assert.That(output.Content.IsModified, Is.True); + }); + } +}