Skip to content

Commit b3caf1a

Browse files
committed
Add unit test for custom vertex component case
1 parent 8803be9 commit b3caf1a

File tree

4 files changed

+60
-18
lines changed

4 files changed

+60
-18
lines changed

tests/Blazor.Diagrams.Tests/Blazor.Diagrams.Tests.csproj

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,10 @@
1-
<Project Sdk="Microsoft.NET.Sdk">
1+
<Project Sdk="Microsoft.NET.Sdk.Razor">
22

33
<PropertyGroup>
44
<TargetFramework>net6.0</TargetFramework>
55
<Nullable>enable</Nullable>
66
<IsPackable>false</IsPackable>
7+
<EmitCompilerGeneratedFiles>true</EmitCompilerGeneratedFiles>
78
</PropertyGroup>
89

910
<ItemGroup>

tests/Blazor.Diagrams.Tests/Components/LinkVertexWidgetTests.cs

Lines changed: 40 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,11 @@
1-

2-
using Blazor.Diagrams.Components;
1+
using Blazor.Diagrams.Components.Renderers;
32
using Blazor.Diagrams.Core.Geometry;
43
using Blazor.Diagrams.Core.Models;
5-
4+
using Blazor.Diagrams.Tests.TestComponents;
65
using Bunit;
7-
86
using FluentAssertions;
9-
107
using Microsoft.AspNetCore.Components.Web;
11-
128
using System.Threading.Tasks;
13-
149
using Xunit;
1510

1611
namespace Blazor.Diagrams.Tests.Components
@@ -29,13 +24,14 @@ public void ShouldRenderCircle()
2924
link.Vertices.Add(vertex);
3025

3126
// Act
32-
var cut = ctx.RenderComponent<LinkVertexWidget>(parameters => parameters
27+
var cut = ctx.RenderComponent<LinkVertexRenderer>(parameters => parameters
3328
.Add(n => n.Vertex, vertex)
3429
.Add(n => n.Color, "red")
35-
.Add(n => n.SelectedColor, "blue"));
30+
.Add(n => n.SelectedColor, "blue")
31+
.Add(n => n.BlazorDiagram, new BlazorDiagram()));
3632

3733
// Assert
38-
cut.MarkupMatches("<circle cx=\"10.5\" cy=\"20\" r=\"5\" fill=\"red\" cursor=\"move\" />");
34+
cut.MarkupMatches("<g class=\"link-vertex\" cursor=\"move\"><circle cx=\"10.5\" cy=\"20\" r=\"5\" fill=\"red\" /></g>");
3935
}
4036

4137
[Fact]
@@ -51,13 +47,14 @@ public void ShouldRenderCircleWithSelectedColor_WhenVertexIsSelected()
5147
vertex.Selected = true;
5248

5349
// Act
54-
var cut = ctx.RenderComponent<LinkVertexWidget>(parameters => parameters
50+
var cut = ctx.RenderComponent<LinkVertexRenderer>(parameters => parameters
5551
.Add(n => n.Vertex, vertex)
5652
.Add(n => n.Color, "red")
57-
.Add(n => n.SelectedColor, "blue"));
53+
.Add(n => n.SelectedColor, "blue")
54+
.Add(n => n.BlazorDiagram, new BlazorDiagram()));
5855

5956
// Assert
60-
cut.MarkupMatches("<circle cx=\"10.5\" cy=\"20\" r=\"5\" fill=\"blue\" cursor=\"move\" />");
57+
cut.MarkupMatches("<g class=\"link-vertex\" cursor=\"move\"><circle cx=\"10.5\" cy=\"20\" r=\"5\" fill=\"blue\" /></g>");
6158
}
6259

6360
[Fact]
@@ -72,10 +69,11 @@ public void ShouldRerender_WhenVertexIsRefreshed()
7269
link.Vertices.Add(vertex);
7370

7471
// Act
75-
var cut = ctx.RenderComponent<LinkVertexWidget>(parameters => parameters
72+
var cut = ctx.RenderComponent<LinkVertexRenderer>(parameters => parameters
7673
.Add(n => n.Vertex, vertex)
7774
.Add(n => n.Color, "red")
78-
.Add(n => n.SelectedColor, "blue"));
75+
.Add(n => n.SelectedColor, "blue")
76+
.Add(n => n.BlazorDiagram, new BlazorDiagram()));
7977

8078
// Assert
8179
cut.RenderCount.Should().Be(1);
@@ -97,16 +95,41 @@ public async Task ShouldDeleteItselfAndRefreshParent_WhenDoubleClicked()
9795
link.Changed += _ => linkRefreshes++;
9896

9997
// Act
100-
var cut = ctx.RenderComponent<LinkVertexWidget>(parameters => parameters
98+
var cut = ctx.RenderComponent<LinkVertexRenderer>(parameters => parameters
10199
.Add(n => n.Vertex, vertex)
102100
.Add(n => n.Color, "red")
103-
.Add(n => n.SelectedColor, "blue"));
101+
.Add(n => n.SelectedColor, "blue")
102+
.Add(n => n.BlazorDiagram, new BlazorDiagram()));
104103

105104
await cut.Find("circle").DoubleClickAsync(new MouseEventArgs());
106105

107106
// Assert
108107
link.Vertices.Should().BeEmpty();
109108
linkRefreshes.Should().Be(1);
110109
}
110+
111+
[Fact]
112+
public void ShouldUseCustomComponent_WhenProvided()
113+
{
114+
// Arrange
115+
using var ctx = new TestContext();
116+
var diagram = new BlazorDiagram();
117+
diagram.RegisterComponent<LinkVertexModel, CustomVertexWidget>();
118+
var node1 = new NodeModel();
119+
var node2 = new NodeModel();
120+
var link = new LinkModel(node1, node2);
121+
var vertex = new LinkVertexModel(link, new Point(10.5, 20));
122+
link.Vertices.Add(vertex);
123+
124+
// Act
125+
var cut = ctx.RenderComponent<LinkVertexRenderer>(parameters => parameters
126+
.Add(n => n.Vertex, vertex)
127+
.Add(n => n.Color, "red")
128+
.Add(n => n.SelectedColor, "blue")
129+
.Add(n => n.BlazorDiagram, diagram));
130+
131+
// Assert
132+
cut.MarkupMatches("<g class=\"link-vertex\" cursor=\"move\"><circle cx=\"10.5\" cy=\"20\" r=\"10\" fill=\"red\" /></g>");
133+
}
111134
}
112135
}
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
@using Blazor.Diagrams.Core.Models;
2+
3+
<circle cx="@Vertex.Position.X" cy="@Vertex.Position.Y" fill="@Color" r="10" />
4+
5+
@code {
6+
[Parameter] public LinkVertexModel Vertex { get; set; } = null!;
7+
[Parameter] public string Color { get; set; } = null!;
8+
}
Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
@using Microsoft.AspNetCore.Components.Web
2+
@using Blazor.Diagrams.Core;
3+
@using Blazor.Diagrams.Core.Models;
4+
@using Blazor.Diagrams.Components;
5+
@using Microsoft.AspNetCore.Components.Forms
6+
@using Microsoft.AspNetCore.Components.Routing
7+
@using Blazor.Diagrams.Core.Extensions;
8+
@using Blazor.Diagrams.Core.Geometry;
9+
@using Blazor.Diagrams.Components.Renderers;
10+
@using Blazor.Diagrams.Components.Widgets;

0 commit comments

Comments
 (0)