ant-design-blazor/tests/AntDesign.Tests/Avatar/AvatarGroupTests.cs
kooliokey 538a479afc
test(module: avatar): Add Avatar and AvatarGroup tests (#2648)
Small refactors:
  - Fix typo in Avatar
  - Remove code in Avatar that wasn't affecting visuals as expected
  - Make Avatar shape a constant. Update Skeleton component and demos to use it
  - Update Avatar component to calculate size after parameters set method due to it changing one of the properties it relies on.
2022-08-30 12:03:35 +00:00

136 lines
5.8 KiB
C#

using System;
using System.Linq;
using System.Threading.Tasks;
using AntDesign.JsInterop;
using Bunit;
using FluentAssertions;
using Microsoft.AspNetCore.Components;
using Microsoft.AspNetCore.Components.Web;
using Microsoft.Extensions.Options;
using Xunit;
namespace AntDesign.Tests.Avatar
{
public class AvatarGroupTests : AntDesignTestBase
{
[Fact]
public void ItShouldRenderAvatarChildCntent()
{
JSInterop
.Setup<HtmlElement>("AntDesign.interop.domInfoHelper.getInfo", _ => true)
.SetResult(new HtmlElement());
JSInterop
.Setup<DomRect>("AntDesign.interop.domInfoHelper.getBoundingClientRect", _ => true)
.SetResult(new DomRect());
RenderFragment fragment = builder =>
{
builder.OpenComponent<AntDesign.Avatar>(0);
builder.AddAttribute(1, "Icon", "user");
builder.CloseComponent();
builder.OpenComponent<AntDesign.Avatar>(1);
builder.AddAttribute(1, "Text", "U");
builder.CloseComponent();
builder.OpenComponent<AntDesign.Avatar>(2);
builder.AddAttribute(1, "Text", "Username");
builder.CloseComponent();
};
var systemUnderTest = RenderComponent<AvatarGroup>(parameters => parameters
.Add(x => x.ChildContent, fragment));
systemUnderTest.FindAll(".ant-avatar").Count.Should().Be(3);
}
[Fact]
public void ItShouldRenderOverflowAvatarsProperly()
{
JSInterop
.Setup<HtmlElement>("AntDesign.interop.domInfoHelper.getInfo", _ => true)
.SetResult(new HtmlElement());
JSInterop
.Setup<DomRect>("AntDesign.interop.domInfoHelper.getBoundingClientRect", _ => true)
.SetResult(new DomRect());
RenderFragment fragment = builder =>
{
builder.OpenComponent<AntDesign.Avatar>(0);
builder.AddAttribute(1, "Icon", "user");
builder.CloseComponent();
builder.OpenComponent<AntDesign.Avatar>(1);
builder.AddAttribute(1, "Text", "U");
builder.CloseComponent();
builder.OpenComponent<AntDesign.Avatar>(2);
builder.AddAttribute(1, "Text", "Username");
builder.CloseComponent();
builder.OpenComponent<AntDesign.Avatar>(3);
builder.AddAttribute(1, "Text", "Username");
builder.CloseComponent();
};
var systemUnderTest = RenderComponent<AvatarGroup>(parameters => parameters
.Add(x => x.ChildContent, fragment)
.Add(x => x.MaxCount, 2));
systemUnderTest.MarkupMatches(@"<div class=""ant-avatar-group"">
<span class=""ant-avatar ant-avatar-icon"" style="" "" id:ignore>
<span role=""img"" class="" anticon anticon-user"" id:ignore>
<svg focusable=""false"" width=""1em"" height=""1em"" fill=""currentColor"" style=""pointer-events: none;"" xmlns=""http://www.w3.org/2000/svg"" class=""icon"" viewBox=""0 0 1024 1024"">
<path d=""M858.5 763.6a374 374 0 0 0-80.6-119.5 375.63 375.63 0 0 0-119.5-80.6c-.4-.2-.8-.3-1.2-.5C719.5 518 760 444.7 760 362c0-137-111-248-248-248S264 225 264 362c0 82.7 40.5 156 102.8 201.1-.4.2-.8.3-1.2.5-44.8 18.9-85 46-119.5 80.6a375.63 375.63 0 0 0-80.6 119.5A371.7 371.7 0 0 0 136 901.8a8 8 0 0 0 8 8.2h60c4.4 0 7.9-3.5 8-7.8 2-77.2 33-149.5 87.8-204.3 56.7-56.7 132-87.9 212.2-87.9s155.5 31.2 212.2 87.9C779 752.7 810 825 812 902.2c.1 4.4 3.6 7.8 8 7.8h60a8 8 0 0 0 8-8.2c-1-47.8-10.9-94.3-29.5-138.2zM512 534c-45.9 0-89.1-17.9-121.6-50.4S340 407.9 340 362c0-45.9 17.9-89.1 50.4-121.6S466.1 190 512 190s89.1 17.9 121.6 50.4S684 316.1 684 362c0 45.9-17.9 89.1-50.4 121.6S557.9 534 512 534z""></path>
</svg>
</span>
</span>
<span class=""ant-avatar"" style="" "" id:ignore>
<span class=""ant-avatar-string"" style=""transform: scale(1) translateX(-50%);"" >
U
</span>
</span>
<span class=""ant-avatar"" style="" "" id:ignore>
<span class=""ant-avatar-string"" style=""transform: scale(1) translateX(-50%);"" >
+2
</span>
</span>
</div>");
}
[Fact]
public void ItShouldWrapChildContentInDiv()
{
JSInterop
.Setup<HtmlElement>("AntDesign.interop.domInfoHelper.getInfo", _ => true)
.SetResult(new HtmlElement());
JSInterop
.Setup<DomRect>("AntDesign.interop.domInfoHelper.getBoundingClientRect", _ => true)
.SetResult(new DomRect());
RenderFragment fragment = builder =>
{
builder.OpenComponent<AntDesign.Avatar>(0);
builder.AddAttribute(1, "Icon", "user");
builder.CloseComponent();
builder.OpenComponent<AntDesign.Avatar>(1);
builder.AddAttribute(1, "Text", "U");
builder.CloseComponent();
builder.OpenComponent<AntDesign.Avatar>(3);
builder.AddAttribute(1, "Text", "Username");
builder.CloseComponent();
};
var systemUnderTest = RenderComponent<AvatarGroup>(parameters => parameters
.Add(x => x.ChildContent, fragment));
systemUnderTest.MarkupMatches("<div class=\"ant-avatar-group\" diff:ignoreChildren></div>");
}
}
}