Skip to content

Commit b2137f1

Browse files
committed
Added more tests
1 parent b5f8768 commit b2137f1

File tree

2 files changed

+161
-84
lines changed

2 files changed

+161
-84
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,144 @@
1+
namespace Bunit.TestDoubles;
2+
3+
public partial class RouterTests : TestContext
4+
{
5+
[Route("/page/{count:int}/{name}")]
6+
private sealed class ComponentWithPageAttribute : ComponentBase
7+
{
8+
[Parameter] public int Count { get; set; }
9+
[Parameter] public string Name { get; set; }
10+
protected override void BuildRenderTree(RenderTreeBuilder builder)
11+
{
12+
builder.OpenElement(0, "p");
13+
builder.AddContent(1, Count);
14+
builder.AddContent(2, " / ");
15+
builder.AddContent(3, Name);
16+
builder.CloseElement();
17+
}
18+
}
19+
20+
[Route("/page")]
21+
[Route("/page/{count:int}")]
22+
private sealed class ComponentWithMultiplePageAttributes : ComponentBase
23+
{
24+
[Parameter] public int Count { get; set; }
25+
protected override void BuildRenderTree(RenderTreeBuilder builder)
26+
{
27+
builder.OpenElement(0, "p");
28+
builder.AddContent(1, Count);
29+
builder.CloseElement();
30+
}
31+
}
32+
33+
[Route("/page/{count:int}")]
34+
private sealed class ComponentWithOtherParameters : ComponentBase
35+
{
36+
[Parameter] public int Count { get; set; }
37+
[Parameter] public int OtherNumber { get; set; }
38+
39+
protected override void BuildRenderTree(RenderTreeBuilder builder)
40+
{
41+
builder.OpenElement(0, "p");
42+
builder.AddContent(1, Count);
43+
builder.AddContent(2, "/");
44+
builder.AddContent(3, OtherNumber);
45+
builder.CloseElement();
46+
}
47+
}
48+
49+
[Route("/page/{*pageRoute}")]
50+
private sealed class ComponentWithCatchAllRoute : ComponentBase
51+
{
52+
[Parameter] public string PageRoute { get; set; }
53+
54+
protected override void BuildRenderTree(RenderTreeBuilder builder)
55+
{
56+
builder.OpenElement(0, "p");
57+
builder.AddContent(1, PageRoute);
58+
builder.CloseElement();
59+
}
60+
}
61+
62+
[Route("/page/{count:int}")]
63+
private sealed class ComponentWithCustomOnParametersSetAsyncsCall : ComponentBase
64+
{
65+
[Parameter] public int Count { get; set; }
66+
[Parameter] public int IncrementOnParametersSet { get; set; }
67+
68+
protected override void OnParametersSet()
69+
{
70+
Count += IncrementOnParametersSet;
71+
}
72+
73+
protected override void BuildRenderTree(RenderTreeBuilder builder)
74+
{
75+
builder.OpenElement(0, "p");
76+
builder.AddContent(1, Count);
77+
builder.CloseElement();
78+
}
79+
}
80+
81+
[Route("/page/{count?:int}")]
82+
private sealed class ComponentWithOptionalParameter : ComponentBase
83+
{
84+
[Parameter] public int? Count { get; set; }
85+
86+
protected override void BuildRenderTree(RenderTreeBuilder builder)
87+
{
88+
builder.OpenElement(0, "p");
89+
builder.AddContent(1, Count);
90+
builder.CloseElement();
91+
}
92+
}
93+
94+
[Route("/page/{count:int}")]
95+
private sealed class ComponentThatNavigatesToSelfOnButtonClick : ComponentBase
96+
{
97+
[Parameter] public int Count { get; set; }
98+
99+
[Inject] private NavigationManager NavigationManager { get; set; }
100+
101+
protected override void BuildRenderTree(RenderTreeBuilder builder)
102+
{
103+
builder.OpenElement(0, "button");
104+
builder.AddAttribute(1, "onclick", EventCallback.Factory.Create(this, () => NavigationManager.NavigateTo($"/page/{Count + 1}")));
105+
builder.AddContent(2, "Increment");
106+
builder.CloseElement();
107+
builder.OpenElement(3, "p");
108+
builder.AddContent(4, Count);
109+
builder.CloseElement();
110+
}
111+
}
112+
113+
#if NET7_0_OR_GREATER
114+
[Route("/page/{count:int}")]
115+
private sealed class ComponentThatNavigatesToSelfOnButtonClickIntercepted : ComponentBase
116+
{
117+
[Parameter] public int Count { get; set; }
118+
119+
[Inject] private NavigationManager NavigationManager { get; set; }
120+
121+
protected override void BuildRenderTree(RenderTreeBuilder builder)
122+
{
123+
builder.OpenElement(0, "button");
124+
builder.AddAttribute(1, "onclick", EventCallback.Factory.Create(this, () => NavigationManager.NavigateTo($"/page/{Count + 1}")));
125+
builder.AddContent(2, "Increment");
126+
builder.CloseElement();
127+
builder.OpenElement(3, "p");
128+
builder.AddContent(4, Count);
129+
builder.CloseElement();
130+
builder.OpenComponent<NavigationLock>(5);
131+
builder.AddAttribute(6, "OnBeforeInternalNavigation",
132+
EventCallback.Factory.Create<LocationChangingContext>(this,
133+
InterceptNavigation
134+
));
135+
builder.CloseComponent();
136+
}
137+
138+
private static void InterceptNavigation(LocationChangingContext context)
139+
{
140+
context.PreventNavigation();
141+
}
142+
}
143+
#endif
144+
}
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
namespace Bunit.TestDoubles;
22

3-
public class RouterTests : TestContext
3+
public partial class RouterTests : TestContext
44
{
55
[Fact]
66
public void NavigatingToRouteWithPageAttributeShouldSetParameters()
@@ -71,92 +71,25 @@ public void ShouldSetOptionalParameter(string uri, string expectedTextContent)
7171
cut.Find("p").TextContent.ShouldBe(expectedTextContent);
7272
}
7373

74-
[Route("/page/{count:int}/{name}")]
75-
private sealed class ComponentWithPageAttribute : ComponentBase
76-
{
77-
[Parameter] public int Count { get; set; }
78-
[Parameter] public string Name { get; set; }
79-
protected override void BuildRenderTree(RenderTreeBuilder builder)
80-
{
81-
builder.OpenElement(0, "p");
82-
builder.AddContent(1, Count);
83-
builder.AddContent(2, " / ");
84-
builder.AddContent(3, Name);
85-
builder.CloseElement();
86-
}
87-
}
88-
89-
[Route("/page")]
90-
[Route("/page/{count:int}")]
91-
private sealed class ComponentWithMultiplePageAttributes : ComponentBase
92-
{
93-
[Parameter] public int Count { get; set; }
94-
protected override void BuildRenderTree(RenderTreeBuilder builder)
95-
{
96-
builder.OpenElement(0, "p");
97-
builder.AddContent(1, Count);
98-
builder.CloseElement();
99-
}
100-
}
101-
102-
[Route("/page/{count:int}")]
103-
private sealed class ComponentWithOtherParameters : ComponentBase
104-
{
105-
[Parameter] public int Count { get; set; }
106-
[Parameter] public int OtherNumber { get; set; }
107-
108-
protected override void BuildRenderTree(RenderTreeBuilder builder)
109-
{
110-
builder.OpenElement(0, "p");
111-
builder.AddContent(1, Count);
112-
builder.AddContent(2, "/");
113-
builder.AddContent(3, OtherNumber);
114-
builder.CloseElement();
115-
}
116-
}
117-
118-
[Route("/page/{*pageRoute}")]
119-
private sealed class ComponentWithCatchAllRoute : ComponentBase
120-
{
121-
[Parameter] public string PageRoute { get; set; }
122-
123-
protected override void BuildRenderTree(RenderTreeBuilder builder)
124-
{
125-
builder.OpenElement(0, "p");
126-
builder.AddContent(1, PageRoute);
127-
builder.CloseElement();
128-
}
129-
}
130-
131-
[Route("/page/{count:int}")]
132-
private sealed class ComponentWithCustomOnParametersSetAsyncsCall : ComponentBase
74+
[Fact]
75+
public void ComponentThatNavigatesToSelfOnClickShouldBeUpdated()
13376
{
134-
[Parameter] public int Count { get; set; }
135-
[Parameter] public int IncrementOnParametersSet { get; set; }
136-
137-
protected override void OnParametersSet()
138-
{
139-
Count += IncrementOnParametersSet;
140-
}
141-
142-
protected override void BuildRenderTree(RenderTreeBuilder builder)
143-
{
144-
builder.OpenElement(0, "p");
145-
builder.AddContent(1, Count);
146-
builder.CloseElement();
147-
}
77+
var cut = RenderComponent<ComponentThatNavigatesToSelfOnButtonClick>();
78+
79+
cut.Find("button").Click();
80+
81+
cut.Find("p").TextContent.ShouldBe("1");
14882
}
14983

150-
[Route("/page/{count?:int}")]
151-
private sealed class ComponentWithOptionalParameter : ComponentBase
84+
#if NET7_0_OR_GREATER
85+
[Fact]
86+
public void ComponentThatInterceptsNavigationShouldNotBeUpdated()
15287
{
153-
[Parameter] public int? Count { get; set; }
154-
155-
protected override void BuildRenderTree(RenderTreeBuilder builder)
156-
{
157-
builder.OpenElement(0, "p");
158-
builder.AddContent(1, Count);
159-
builder.CloseElement();
160-
}
88+
var cut = RenderComponent<ComponentThatNavigatesToSelfOnButtonClickIntercepted>();
89+
90+
cut.Find("button").Click();
91+
92+
cut.Find("p").TextContent.ShouldBe("0");
16193
}
94+
#endif
16295
}

0 commit comments

Comments
 (0)