1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132
|
// Copyright (c) Microsoft Corporation. All rights reserved. See License.txt in the project root for license information.
using System.Web.Mvc;
using System.Web.Routing;
using Microsoft.Web.UnitTestUtil;
using Xunit;
using Assert = Microsoft.TestCommon.AssertEx;
namespace Microsoft.Web.Mvc.Test
{
public class ImageExtensionsTest
{
[Fact]
public void ImageWithEmptyRelativeUrlThrowsArgumentNullException()
{
HtmlHelper html = MvcHelper.GetHtmlHelperWithPath(new ViewDataDictionary());
Assert.ThrowsArgumentNullOrEmpty(() => html.Image(null), "imageRelativeUrl");
}
[Fact]
public void ImageStaticWithEmptyRelativeUrlThrowsArgumentNullException()
{
Assert.ThrowsArgumentNullOrEmpty(() => ImageExtensions.Image((string)null, "alt", null), "imageUrl");
}
[Fact]
public void ImageWithRelativeUrlRendersProperImageTag()
{
HtmlHelper html = MvcHelper.GetHtmlHelperWithPath(new ViewDataDictionary());
MvcHtmlString imageResult = html.Image("/system/web/mvc.jpg");
// NOTE: Although XHTML requires an alt tag, we don't construct one for you. Specify it yourself.
Assert.Equal("<img src=\"/system/web/mvc.jpg\" />", imageResult.ToHtmlString());
}
[Fact]
public void ImageWithWithAttributesWithUnderscores()
{
HtmlHelper html = MvcHelper.GetHtmlHelperWithPath(new ViewDataDictionary());
MvcHtmlString imageResult = html.Image("/system/web/mvc.jpg", new { foo_bar = "baz" });
Assert.Equal("<img foo-bar=\"baz\" src=\"/system/web/mvc.jpg\" />", imageResult.ToHtmlString());
}
[Fact]
public void ImageWithAltValueRendersImageWithAltTag()
{
HtmlHelper html = MvcHelper.GetHtmlHelperWithPath(new ViewDataDictionary());
MvcHtmlString imageResult = html.Image("/system/web/mvc.jpg", "this is an alt value");
Assert.Equal("<img alt=\"this is an alt value\" src=\"/system/web/mvc.jpg\" title=\"this is an alt value\" />", imageResult.ToHtmlString());
}
[Fact]
public void ImageWithAltValueInObjectDictionaryRendersImageWithAltAndTitleTag()
{
HtmlHelper html = MvcHelper.GetHtmlHelperWithPath(new ViewDataDictionary());
MvcHtmlString imageResult = html.Image("/system/web/mvc.jpg", new { alt = "this is an alt value" });
Assert.Equal("<img alt=\"this is an alt value\" src=\"/system/web/mvc.jpg\" title=\"this is an alt value\" />", imageResult.ToHtmlString());
}
[Fact]
public void ImageWithAltValueHtmlAttributeEncodesAltTag()
{
HtmlHelper html = MvcHelper.GetHtmlHelperWithPath(new ViewDataDictionary());
MvcHtmlString imageResult = html.Image("/system/web/mvc.jpg", @"<"">");
Assert.Equal("<img alt=\"<">\" src=\"/system/web/mvc.jpg\" title=\"<">\" />", imageResult.ToHtmlString());
}
[Fact]
public void ImageWithAltValueInObjectDictionaryHtmlAttributeEncodesAltTag()
{
HtmlHelper html = MvcHelper.GetHtmlHelperWithPath(new ViewDataDictionary());
MvcHtmlString imageResult = html.Image("/system/web/mvc.jpg", new { alt = "this is an alt value" });
Assert.Equal("<img alt=\"this is an alt value\" src=\"/system/web/mvc.jpg\" title=\"this is an alt value\" />", imageResult.ToHtmlString());
}
[Fact]
public void ImageWithAltSpecifiedAndInDictionaryRendersExplicit()
{
HtmlHelper html = MvcHelper.GetHtmlHelperWithPath(new ViewDataDictionary());
MvcHtmlString imageResult = html.Image("/system/web/mvc.jpg", "specified-alt", new { alt = "object-dictionary-alt" });
Assert.Equal("<img alt=\"object-dictionary-alt\" src=\"/system/web/mvc.jpg\" title=\"object-dictionary-alt\" />", imageResult.ToHtmlString());
}
[Fact]
public void ImageWithAltAndAttributesWithUnderscores()
{
HtmlHelper html = MvcHelper.GetHtmlHelperWithPath(new ViewDataDictionary());
MvcHtmlString imageResult = html.Image("/system/web/mvc.jpg", "specified-alt", new { foo_bar = "baz" });
Assert.Equal("<img alt=\"specified-alt\" foo-bar=\"baz\" src=\"/system/web/mvc.jpg\" title=\"specified-alt\" />", imageResult.ToHtmlString());
}
[Fact]
public void ImageWithSrcSpecifiedAndInDictionaryRendersExplicit()
{
HtmlHelper html = MvcHelper.GetHtmlHelperWithPath(new ViewDataDictionary());
MvcHtmlString imageResult = html.Image("/system/web/mvc.jpg", new { src = "explicit.jpg" });
Assert.Equal("<img src=\"explicit.jpg\" />", imageResult.ToHtmlString());
}
[Fact]
public void ImageWithOtherAttributesRendersThoseAttributesCaseSensitively()
{
HtmlHelper html = MvcHelper.GetHtmlHelperWithPath(new ViewDataDictionary());
MvcHtmlString imageResult = html.Image("/system/web/mvc.jpg", new { width = 100, Height = 200 });
Assert.Equal("<img Height=\"200\" src=\"/system/web/mvc.jpg\" width=\"100\" />", imageResult.ToHtmlString());
}
[Fact]
public void ImageWithUrlAndDictionaryRendersAttributes()
{
HtmlHelper html = MvcHelper.GetHtmlHelperWithPath(new ViewDataDictionary());
var attributes = new RouteValueDictionary(new { width = 125 });
MvcHtmlString imageResult = html.Image("/system/web/mvc.jpg", attributes);
Assert.Equal("<img src=\"/system/web/mvc.jpg\" width=\"125\" />", imageResult.ToHtmlString());
}
[Fact]
public void ImageWithTildePathAndAppPathResolvesCorrectly()
{
HtmlHelper html = MvcHelper.GetHtmlHelperWithPath(new ViewDataDictionary(), "/app");
MvcHtmlString imageResult = html.Image("~/system/web/mvc.jpg");
Assert.Equal("<img src=\"/$(SESSION)/app/system/web/mvc.jpg\" />", imageResult.ToHtmlString());
}
[Fact]
public void ImageWithTildePathWithoutAppPathResolvesCorrectly()
{
HtmlHelper html = MvcHelper.GetHtmlHelperWithPath(new ViewDataDictionary(), "/");
MvcHtmlString imageResult = html.Image("~/system/web/mvc.jpg");
Assert.Equal("<img src=\"/$(SESSION)/system/web/mvc.jpg\" />", imageResult.ToHtmlString());
}
}
}
|