diff --git a/.editorconfig b/.editorconfig index 10802ed97..1df8bfdd7 100644 --- a/.editorconfig +++ b/.editorconfig @@ -3,7 +3,7 @@ root = true [*] indent_style = tab indent_size = tab -tab_size = 4 +tab_width = 4 charset = utf-8 trim_trailing_whitespace = true insert_final_newline = true diff --git a/docs/.editorconfig b/docs/.editorconfig index db3192a43..7c9ecba8f 100644 --- a/docs/.editorconfig +++ b/docs/.editorconfig @@ -2,7 +2,7 @@ root = true [*] indent_style = space -tab_size = 2 +indent_size = 2 charset = utf-8 trim_trailing_whitespace = true insert_final_newline = false @@ -11,8 +11,6 @@ insert_final_newline = false trim_trailing_whitespace = false [*.{cs,razor}] -tab_size = 2 -indent_style = space dotnet_diagnostic.BL0001.severity = none dotnet_diagnostic.BL0002.severity = none dotnet_diagnostic.BL0003.severity = none diff --git a/docs/samples/tests/mstest/BunitTestContext.cs b/docs/samples/tests/mstest/BunitTestContext.cs index f58137193..2dad801cf 100644 --- a/docs/samples/tests/mstest/BunitTestContext.cs +++ b/docs/samples/tests/mstest/BunitTestContext.cs @@ -1,13 +1,13 @@ +namespace Bunit.Docs.Samples; + using Microsoft.VisualStudio.TestTools.UnitTesting; +using Bunit; -namespace Bunit.Docs.Samples +public abstract class BunitTestContext : TestContextWrapper { - public abstract class BunitTestContext : TestContextWrapper - { - [TestInitialize] - public void Setup() => TestContext = new Bunit.TestContext(); + [TestInitialize] + public void Setup() => TestContext = new Bunit.TestContext(); - [TestCleanup] - public void TearDown() => TestContext?.Dispose(); - } + [TestCleanup] + public void TearDown() => TestContext?.Dispose(); } \ No newline at end of file diff --git a/docs/samples/tests/mstest/HelloWorldImplicitContextTest.cs b/docs/samples/tests/mstest/HelloWorldImplicitContextTest.cs deleted file mode 100644 index 4b801fbe4..000000000 --- a/docs/samples/tests/mstest/HelloWorldImplicitContextTest.cs +++ /dev/null @@ -1,19 +0,0 @@ -using Bunit; -using Microsoft.VisualStudio.TestTools.UnitTesting; - -namespace Bunit.Docs.Samples -{ - [TestClass] - public class HelloHelloWorldImplicitContextTest : BunitTestContext - { - [TestMethod] - public void HelloWorldComponentRendersCorrectly() - { - // Act - var cut = RenderComponent(); - - // Assert - cut.MarkupMatches("

Hello world from Blazor

"); - } - } -} \ No newline at end of file diff --git a/docs/samples/tests/mstest/HelloWorldRazorTest.razor b/docs/samples/tests/mstest/HelloWorldRazorTest.razor index ab525d4be..f821bd1ab 100644 --- a/docs/samples/tests/mstest/HelloWorldRazorTest.razor +++ b/docs/samples/tests/mstest/HelloWorldRazorTest.razor @@ -1,14 +1,12 @@ @attribute [TestClass] -@code +@inherits BunitTestContext +@code { [TestMethod] public void HelloWorldComponentRendersCorrectly() { - // Arrange - using var ctx = new Bunit.TestContext(); - // Act - var cut = ctx.Render(@); + var cut = Render(@); // Assert cut.MarkupMatches(@

Hello world from Blazor

); diff --git a/docs/samples/tests/mstest/HelloWorldTest.cs b/docs/samples/tests/mstest/HelloWorldTest.cs index aa7b17960..13c8f69c7 100644 --- a/docs/samples/tests/mstest/HelloWorldTest.cs +++ b/docs/samples/tests/mstest/HelloWorldTest.cs @@ -1,22 +1,18 @@ -using Bunit; +namespace Bunit.Docs.Samples; + using Microsoft.VisualStudio.TestTools.UnitTesting; +using Bunit; -namespace Bunit.Docs.Samples +[TestClass] +public class HelloWorldTest : BunitTestContext { - [TestClass] - public class HelloWorldTest + [TestMethod] + public void HelloWorldComponentRendersCorrectly() { - [TestMethod] - public void HelloWorldComponentRendersCorrectly() - { - // Arrange - using var ctx = new Bunit.TestContext(); - - // Act - var cut = ctx.RenderComponent(); + // Act + var cut = RenderComponent(); - // Assert - cut.MarkupMatches("

Hello world from Blazor

"); - } + // Assert + cut.MarkupMatches("

Hello world from Blazor

"); } } \ No newline at end of file diff --git a/docs/samples/tests/nunit/BunitTestContext.cs b/docs/samples/tests/nunit/BunitTestContext.cs index fedc1a0bf..00dd5f7d0 100644 --- a/docs/samples/tests/nunit/BunitTestContext.cs +++ b/docs/samples/tests/nunit/BunitTestContext.cs @@ -1,14 +1,13 @@ +namespace Bunit.Docs.Samples; + using Bunit; using NUnit.Framework; -namespace Bunit.Docs.Samples +public abstract class BunitTestContext : TestContextWrapper { - public abstract class BunitTestContext : TestContextWrapper - { - [SetUp] - public void Setup() => TestContext = new Bunit.TestContext(); + [SetUp] + public void Setup() => TestContext = new Bunit.TestContext(); - [TearDown] - public void TearDown() => TestContext?.Dispose(); - } + [TearDown] + public void TearDown() => TestContext?.Dispose(); } \ No newline at end of file diff --git a/docs/samples/tests/nunit/HelloWorldImplicitContextRazorTest.razor b/docs/samples/tests/nunit/HelloWorldImplicitContextRazorTest.razor deleted file mode 100644 index 6de4ac4f4..000000000 --- a/docs/samples/tests/nunit/HelloWorldImplicitContextRazorTest.razor +++ /dev/null @@ -1,13 +0,0 @@ -@inherits BunitTestContext -@code -{ - [Test] - public void HelloWorldComponentRendersCorrectly() - { - // Act - var cut = Render(@); - - // Assert - cut.MarkupMatches(@

Hello world from Blazor

); - } -} \ No newline at end of file diff --git a/docs/samples/tests/nunit/HelloWorldImplicitContextTest.cs b/docs/samples/tests/nunit/HelloWorldImplicitContextTest.cs deleted file mode 100644 index e3f6b4d72..000000000 --- a/docs/samples/tests/nunit/HelloWorldImplicitContextTest.cs +++ /dev/null @@ -1,18 +0,0 @@ -using Bunit; -using NUnit.Framework; - -namespace Bunit.Docs.Samples -{ - public class HelloHelloWorldImplicitContextTest : BunitTestContext - { - [Test] - public void HelloWorldComponentRendersCorrectly() - { - // Act - var cut = RenderComponent(); - - // Assert - cut.MarkupMatches("

Hello world from Blazor

"); - } - } -} \ No newline at end of file diff --git a/docs/samples/tests/nunit/HelloWorldRazorTest.razor b/docs/samples/tests/nunit/HelloWorldRazorTest.razor index c2f88c86b..6de4ac4f4 100644 --- a/docs/samples/tests/nunit/HelloWorldRazorTest.razor +++ b/docs/samples/tests/nunit/HelloWorldRazorTest.razor @@ -1,13 +1,11 @@ +@inherits BunitTestContext @code { [Test] public void HelloWorldComponentRendersCorrectly() { - // Arrange - using var ctx = new Bunit.TestContext(); - // Act - var cut = ctx.Render(@); + var cut = Render(@); // Assert cut.MarkupMatches(@

Hello world from Blazor

); diff --git a/docs/samples/tests/nunit/HelloWorldTest.cs b/docs/samples/tests/nunit/HelloWorldTest.cs index 36386e769..d8ad7011d 100644 --- a/docs/samples/tests/nunit/HelloWorldTest.cs +++ b/docs/samples/tests/nunit/HelloWorldTest.cs @@ -1,21 +1,17 @@ +namespace Bunit.Docs.Samples; + using Bunit; using NUnit.Framework; -namespace Bunit.Docs.Samples +public class HelloWorldTest : BunitTestContext { - public class HelloWorldTest - { [Test] public void HelloWorldComponentRendersCorrectly() { - // Arrange - using var ctx = new Bunit.TestContext(); - - // Act - var cut = ctx.RenderComponent(); + // Act + var cut = RenderComponent(); - // Assert - cut.MarkupMatches("

Hello world from Blazor

"); + // Assert + cut.MarkupMatches("

Hello world from Blazor

"); } - } } \ No newline at end of file diff --git a/docs/samples/tests/razor/CascadingParams1Test.razor b/docs/samples/tests/razor/CascadingParams1Test.razor index 17a329bf6..db67f0142 100644 --- a/docs/samples/tests/razor/CascadingParams1Test.razor +++ b/docs/samples/tests/razor/CascadingParams1Test.razor @@ -1,14 +1,14 @@ +@inherits TestContext + @code { [Fact] public void Test() { - using var ctx = new TestContext(); - var isDarkTheme = true; - var cut = ctx.Render(@ - - ); + var cut = Render(@ + + ); } } \ No newline at end of file diff --git a/docs/samples/tests/razor/CascadingParams2Test.razor b/docs/samples/tests/razor/CascadingParams2Test.razor index 667e8e06b..3dc8d73d0 100644 --- a/docs/samples/tests/razor/CascadingParams2Test.razor +++ b/docs/samples/tests/razor/CascadingParams2Test.razor @@ -1,12 +1,12 @@ +@inherits TestContext + @code { [Fact] public void Test() { - using var ctx = new TestContext(); - - var cut = ctx.Render(@ - - ); + var cut = Render(@ + + ); } } \ No newline at end of file diff --git a/docs/samples/tests/razor/CascadingParams3Test.razor b/docs/samples/tests/razor/CascadingParams3Test.razor index bbb079612..fa0f03812 100644 --- a/docs/samples/tests/razor/CascadingParams3Test.razor +++ b/docs/samples/tests/razor/CascadingParams3Test.razor @@ -1,18 +1,18 @@ +@inherits TestContext + @code { [Fact] public void Test() { - using var ctx = new TestContext(); - var isDarkTheme = true; - var cut = ctx.Render(@ - - - - - - ); + var cut = Render(@ + + + + + + ); } } \ No newline at end of file diff --git a/docs/samples/tests/razor/ChildContentParams1Test.razor b/docs/samples/tests/razor/ChildContentParams1Test.razor index cf72072f3..18ee564e4 100644 --- a/docs/samples/tests/razor/ChildContentParams1Test.razor +++ b/docs/samples/tests/razor/ChildContentParams1Test.razor @@ -1,12 +1,12 @@ +@inherits TestContext + @code { [Fact] public void Test() { - using var ctx = new TestContext(); - - var cut = ctx.Render(@ -

Hello World

-
); + var cut = Render(@ +

Hello World

+
); } } \ No newline at end of file diff --git a/docs/samples/tests/razor/ChildContentParams2Test.razor b/docs/samples/tests/razor/ChildContentParams2Test.razor index 0c77b3851..7ff765e5c 100644 --- a/docs/samples/tests/razor/ChildContentParams2Test.razor +++ b/docs/samples/tests/razor/ChildContentParams2Test.razor @@ -1,12 +1,12 @@ +@inherits TestContext + @code { [Fact] public void Test() { - using var ctx = new TestContext(); - - var cut = ctx.Render(@ - - ); + var cut = Render(@ + + ); } } \ No newline at end of file diff --git a/docs/samples/tests/razor/ChildContentParams3Test.razor b/docs/samples/tests/razor/ChildContentParams3Test.razor index dcd8a74ba..9e1041bc8 100644 --- a/docs/samples/tests/razor/ChildContentParams3Test.razor +++ b/docs/samples/tests/razor/ChildContentParams3Test.razor @@ -1,14 +1,14 @@ +@inherits TestContext + @code { [Fact] public void Test() { - using var ctx = new TestContext(); - - var cut = ctx.Render(@ - -

Hello World

-
-
); + var cut = Render(@ + +

Hello World

+
+
); } } \ No newline at end of file diff --git a/docs/samples/tests/razor/ChildContentParams4Test.razor b/docs/samples/tests/razor/ChildContentParams4Test.razor index fe832634a..fb9751d92 100644 --- a/docs/samples/tests/razor/ChildContentParams4Test.razor +++ b/docs/samples/tests/razor/ChildContentParams4Test.razor @@ -1,15 +1,15 @@ +@inherits TestContext + @code { [Fact] public void Test() { - using var ctx = new TestContext(); - - var cut = ctx.Render(@ -

Below you will find a most interesting alert!

- -

Hello World

-
-
); + var cut = Render(@ +

Below you will find a most interesting alert!

+ +

Hello World

+
+
); } } \ No newline at end of file diff --git a/docs/samples/tests/razor/ClickMeTest.razor b/docs/samples/tests/razor/ClickMeTest.razor index f8ecd352f..940aa5595 100644 --- a/docs/samples/tests/razor/ClickMeTest.razor +++ b/docs/samples/tests/razor/ClickMeTest.razor @@ -1,11 +1,12 @@ +@inherits TestContext + @code { [Fact] public void Test() { // Arrange - using var ctx = new TestContext(); - var cut = ctx.Render(@); + var cut = Render(@); var buttonElement = cut.Find("button"); // Act diff --git a/docs/samples/tests/razor/EventCallbackParamsTest.razor b/docs/samples/tests/razor/EventCallbackParamsTest.razor index e9bbd4d0e..02482b6ef 100644 --- a/docs/samples/tests/razor/EventCallbackParamsTest.razor +++ b/docs/samples/tests/razor/EventCallbackParamsTest.razor @@ -1,15 +1,15 @@ +@inherits TestContext + @code { [Fact] public void Test() { - using var ctx = new TestContext(); - Action onClickHandler = _ => { }; Action onSomethingHandler = () => { }; - var cut = ctx.Render(@); + var cut = Render(@); } } \ No newline at end of file diff --git a/docs/samples/tests/razor/NestedComponentTest.razor b/docs/samples/tests/razor/NestedComponentTest.razor index 531cccc36..470a1b06c 100644 --- a/docs/samples/tests/razor/NestedComponentTest.razor +++ b/docs/samples/tests/razor/NestedComponentTest.razor @@ -1,12 +1,12 @@ +@inherits TestContext + @code { [Fact] public void Test() { - using var ctx = new TestContext(); - - var cut = ctx.Render(@ - - ); + var cut = Render(@ + + ); } } \ No newline at end of file diff --git a/docs/samples/tests/razor/NonBlazorTypesParamsTest.razor b/docs/samples/tests/razor/NonBlazorTypesParamsTest.razor index dc6798edc..af4f64dd6 100644 --- a/docs/samples/tests/razor/NonBlazorTypesParamsTest.razor +++ b/docs/samples/tests/razor/NonBlazorTypesParamsTest.razor @@ -1,14 +1,14 @@ +@inherits TestContext + @code { [Fact] public void Test() { - using var ctx = new TestContext(); - var lines = new List { "Hello", "World" }; - var cut = ctx.Render(@); + var cut = Render(@); } } \ No newline at end of file diff --git a/docs/samples/tests/razor/RenderFragmentParams1Test.razor b/docs/samples/tests/razor/RenderFragmentParams1Test.razor index 94379ae6d..0ffb568ca 100644 --- a/docs/samples/tests/razor/RenderFragmentParams1Test.razor +++ b/docs/samples/tests/razor/RenderFragmentParams1Test.razor @@ -1,12 +1,12 @@ +@inherits TestContext + @code { [Fact] public void Test() { - using var ctx = new TestContext(); - - var cut = ctx.Render(@ -

Hello World

-
); + var cut = Render(@ +

Hello World

+
); } } \ No newline at end of file diff --git a/docs/samples/tests/razor/RenderFragmentParams2Test.razor b/docs/samples/tests/razor/RenderFragmentParams2Test.razor index 38c9b5bad..ceb160a91 100644 --- a/docs/samples/tests/razor/RenderFragmentParams2Test.razor +++ b/docs/samples/tests/razor/RenderFragmentParams2Test.razor @@ -1,12 +1,12 @@ +@inherits TestContext + @code { [Fact] public void Test() { - using var ctx = new TestContext(); - - var cut = ctx.Render(@ - - ); + var cut = Render(@ + + ); } } diff --git a/docs/samples/tests/razor/RenderFragmentParams3Test.razor b/docs/samples/tests/razor/RenderFragmentParams3Test.razor index ac1c91d7c..36adadd33 100644 --- a/docs/samples/tests/razor/RenderFragmentParams3Test.razor +++ b/docs/samples/tests/razor/RenderFragmentParams3Test.razor @@ -1,16 +1,16 @@ +@inherits TestContext + @code { [Fact] public void Test() { - using var ctx = new TestContext(); - - var cut = ctx.Render(@ - - -

Hello World

-
-
-
); + var cut = Render(@ + + +

Hello World

+
+
+
); } } \ No newline at end of file diff --git a/docs/samples/tests/razor/RenderFragmentParams4Test.razor b/docs/samples/tests/razor/RenderFragmentParams4Test.razor index 3975f75da..0fa477306 100644 --- a/docs/samples/tests/razor/RenderFragmentParams4Test.razor +++ b/docs/samples/tests/razor/RenderFragmentParams4Test.razor @@ -1,17 +1,17 @@ +@inherits TestContext + @code { [Fact] public void Test() { - using var ctx = new TestContext(); - - var cut = ctx.Render(@ - -

Below you will find a most interesting alert!

- -

Hello World

-
-
-
); + var cut = Render(@ + +

Below you will find a most interesting alert!

+ +

Hello World

+
+
+
); } } \ No newline at end of file diff --git a/docs/samples/tests/razor/TemplateParams1Test.razor b/docs/samples/tests/razor/TemplateParams1Test.razor index a475e6aba..612a27abb 100644 --- a/docs/samples/tests/razor/TemplateParams1Test.razor +++ b/docs/samples/tests/razor/TemplateParams1Test.razor @@ -1,16 +1,16 @@ +@inherits TestContext + @code { #if NET6_0 [Fact] public void Test() { - using var ctx = new TestContext(); - - var cut = ctx.Render(@ - - ); + var cut = Render(@ + + ); } #endif } \ No newline at end of file diff --git a/docs/samples/tests/razor/TemplateParams2Test.razor b/docs/samples/tests/razor/TemplateParams2Test.razor index 76505470f..3afcffd59 100644 --- a/docs/samples/tests/razor/TemplateParams2Test.razor +++ b/docs/samples/tests/razor/TemplateParams2Test.razor @@ -1,16 +1,16 @@ +@inherits TestContext + @code { #if NET6_0 [Fact] public void Test() { - using var ctx = new TestContext(); - - var cut = ctx.Render(@ - - ); + var cut = Render(@ + + ); } #endif } \ No newline at end of file diff --git a/docs/samples/tests/razor/UnmatchedParamsTest.razor b/docs/samples/tests/razor/UnmatchedParamsTest.razor index a7ee122d5..f52af243f 100644 --- a/docs/samples/tests/razor/UnmatchedParamsTest.razor +++ b/docs/samples/tests/razor/UnmatchedParamsTest.razor @@ -1,10 +1,10 @@ +@inherits TestContext + @code { [Fact] public void Test() { - using var ctx = new TestContext(); - - var cut = ctx.Render(@); + var cut = Render(@); } } \ No newline at end of file diff --git a/docs/samples/tests/xunit/AllKindsOfParamsTest.cs b/docs/samples/tests/xunit/AllKindsOfParamsTest.cs index 2ce634bfa..13179ddc5 100644 --- a/docs/samples/tests/xunit/AllKindsOfParamsTest.cs +++ b/docs/samples/tests/xunit/AllKindsOfParamsTest.cs @@ -6,348 +6,337 @@ using Bunit.Rendering; using static Bunit.ComponentParameterFactory; -namespace Bunit.Docs.Samples +namespace Bunit.Docs.Samples; + +public class AllKindsOfParamsTest : TestContext { - public class AllKindsOfParamsTest + [Fact] + public void NonBlazorParamTypes() + { + // Using C# tuple with hardcoded name + var cut1 = RenderComponent( + ("Numbers", 42), + ("Lines", new List { "Hello", "World" }) + ); + + // Using C# tuple with refactor safe name + var cut2 = RenderComponent( + (nameof(NonBlazorTypesParams.Numbers), 42), + (nameof(NonBlazorTypesParams.Lines), new List { "Hello", "World" }) + ); + + // Using factory method + var cut3 = RenderComponent( + Parameter("Numbers", 42), + Parameter("Lines", new List { "Hello", "World" }) + ); + + // Using parameter builder + var cut4 = RenderComponent(parameters => parameters + .Add(p => p.Numbers, 42) + .Add(p => p.Lines, new List { "Hello", "World" }) + ); + } + + [Fact] + public void EventCallbackTypes() + { + + // Using factory method with hardcoded name + var cut1 = RenderComponent( + EventCallback("OnClick", (MouseEventArgs args) => + { + /* handle callback */ + }), + EventCallback("OnSomething", () => + { + /* handle callback */ + }) + ); + + // Using factory method refactor safe name + var cut2 = RenderComponent( + EventCallback(nameof(EventCallbackParams.OnClick), (MouseEventArgs args) => + { + /* handle callback */ + }), + EventCallback(nameof(EventCallbackParams.OnSomething), () => + { + /* handle callback */ + }) + ); + + // Using parameter builder + var cut3 = RenderComponent(parameters => parameters + .Add(p => p.OnClick, args => + { + /* handle callback */ + }) + .Add(p => p.OnSomething, () => + { + /* handle callback */ + }) + ); + } + + [Fact] + public void HtmlAsChildContent() + { + // Using factory method + var cut1 = RenderComponent( + ChildContent("

Hello World

") + ); + + // Using parameter builder + var cut2 = RenderComponent(parameters => parameters + .AddChildContent("

Hello World

") + ); + } + + [Fact] + public void ComponentAsChildContent() + { + // Using factory method + var cut1 = RenderComponent( + ChildContent() + ); + + // Using parameter builder + var cut2 = RenderComponent(parameters => parameters + .AddChildContent() + ); + } + + [Fact] + public void ComponentWithParamsAsChildContent() + { + // Using factory method + var cut1 = RenderComponent( + ChildContent( + ("Heading", "Alert heading"), + ("Type", AlertType.Warning), + ChildContent("

Hello World

") + ) + ); + + // Using parameter builder + var cut2 = RenderComponent(parameters => parameters + .AddChildContent(alertParameters => alertParameters + .Add(p => p.Heading, "Alert heading") + .Add(p => p.Type, AlertType.Warning) + .AddChildContent("

Hello World

") + ) + ); + } + + [Fact] + public void ComponentAndMarkupAsChildContent() + { + // Using factory method + var cut1 = RenderComponent( + ChildContent("

Below you will find a most interesting alert!

"), + ChildContent( + ("Heading", "Alert heading"), + ("Type", AlertType.Warning), + ChildContent("

Hello World

") + ) + ); + + // Using parameter builder + var cut2 = RenderComponent(parameters => parameters + .AddChildContent("

Below you will find a most interesting alert!

") + .AddChildContent(childParams => childParams + .Add(p => p.Heading, "Alert heading") + .Add(p => p.Type, AlertType.Warning) + .AddChildContent("

Hello World

") + ) + ); + } + + [Fact] + public void HtmlAsRenderFragment() + { + // Using factory method + var cut1 = RenderComponent( + RenderFragment("Content", "

Hello World

") + ); + + // Using parameter builder + var cut2 = RenderComponent(parameters => parameters + .Add(p => p.Content, "

Hello World

") + ); + } + + [Fact] + public void ComponentAsRenderFragment() + { + // Using factory method + var cut1 = RenderComponent( + RenderFragment("Content") + ); + + // Using parameter builder + var cut2 = RenderComponent(parameters => parameters + .Add(p => p.Content) + ); + } + + [Fact] + public void ComponentWithParamsAsRenderFragment() + { + // Using factory method + var cut1 = RenderComponent( + RenderFragment("Content", + ("Heading", "Alert heading"), + ("Type", AlertType.Warning), + ChildContent("

Hello World

") + ) + ); + + // Using parameter builder + var cut2 = RenderComponent(parameters => parameters + .Add(p => p.Content, alertParameters => alertParameters + .Add(p => p.Heading, "Alert heading") + .Add(p => p.Type, AlertType.Warning) + .AddChildContent("

Hello World

") + ) + ); + } + + [Fact] + public void ComponentAndMarkupAsRenderFragment() + { + // Using factory method + var cut1 = RenderComponent( + RenderFragment("Content", "

Below you will find a most interesting alert!

"), + RenderFragment("Content", + ("Heading", "Alert heading"), + ("Type", AlertType.Warning), + ChildContent("

Hello World

") + ) + ); + + // Using parameter builder + var cut2 = RenderComponent(parameters => parameters + .Add(p => p.Content, "

Below you will find a most interesting alert!

") + .Add(p => p.Content, childParams => childParams + .Add(p => p.Heading, "Alert heading") + .Add(p => p.Type, AlertType.Warning) + .AddChildContent("

Hello World

") + ) + ); + } + + [Fact] + public void HtmlTemplateParams() + { + // Using factory method + var cut1 = RenderComponent>( + ("Items", new string[] { "Foo", "Bar", "Baz" }), + Template("Template", item => $"{item}") + ); + + // Using parameter builder + var cut2 = RenderComponent>(parameters => parameters + .Add(p => p.Items, new[] { "Foo", "Bar", "Baz" }) + .Add(p => p.Template, item => $"{item}") + ); + } + + [Fact] + public void HtmlAndComponentTemplateParams() + { + // Using factory method + var cut1 = RenderComponent>( + ("Items", new string[] { "Foo", "Bar", "Baz" }), + Template("Template", value => new ComponentParameter[] + { + ("Value", value) + }) + ); + + // Using parameter builder + var cut2 = RenderComponent>(parameters => parameters + .Add(p => p.Items, new[] { "Foo", "Bar", "Baz" }) + .Add(p => p.Template, value => itemParams => itemParams + .Add(p => p.Value, value) + ) + ); + } + + [Fact] + public void UnmatchedParamsTest() + { + // Using factory method + var cut1 = RenderComponent( + ("some-unknown-param", "a value") + ); + + // Using parameter builder + var cut2 = RenderComponent(parameters => parameters + .AddUnmatched("some-unknown-param", "a value") + ); + } + + [Fact] + public void UnnamedCascadingParamsTest() + { + var isDarkTheme = true; + + // Using factory method + var cut1 = RenderComponent( + CascadingValue(isDarkTheme) + ); + + // Using parameter builder + var cut2 = RenderComponent(parameters => parameters + .AddCascadingValue(isDarkTheme) + ); + + // Using parameter builder and selecting unnamed cascading parameter + var cut3 = RenderComponent(parameters => parameters + .Add(p => p.IsDarkTheme, isDarkTheme) + ); + } + + [Fact] + public void NamedCascadingParamsTest() + { + // Using factory method + var cut1 = RenderComponent( + CascadingValue("LoggedInUser", "Egil Hansen") + ); + + // Using parameter builder + var cut2 = RenderComponent(parameters => parameters + .Add(p => p.UserName, "Egil Hansen") + ); + } + + [Fact] + public void UnnamedAndNamedCascadingParamsTest() { - [Fact] - public void NonBlazorParamTypes() - { - using var ctx = new TestContext(); - - // Using C# tuple with hardcoded name - var cut1 = ctx.RenderComponent( - ("Numbers", 42), - ("Lines", new List { "Hello", "World" }) - ); - - // Using C# tuple with refactor safe name - var cut2 = ctx.RenderComponent( - (nameof(NonBlazorTypesParams.Numbers), 42), - (nameof(NonBlazorTypesParams.Lines), new List { "Hello", "World" }) - ); - - // Using factory method - var cut3 = ctx.RenderComponent( - Parameter("Numbers", 42), - Parameter("Lines", new List { "Hello", "World" }) - ); - - // Using parameter builder - var cut4 = ctx.RenderComponent(parameters => parameters - .Add(p => p.Numbers, 42) - .Add(p => p.Lines, new List { "Hello", "World" }) - ); - } - - [Fact] - public void EventCallbackTypes() - { - using var ctx = new TestContext(); - - // Using factory method with hardcoded name - var cut1 = ctx.RenderComponent( - EventCallback("OnClick", (MouseEventArgs args) => { /* handle callback */ }), - EventCallback("OnSomething", () => { /* handle callback */ }) - ); - - // Using factory method refactor safe name - var cut2 = ctx.RenderComponent( - EventCallback(nameof(EventCallbackParams.OnClick), (MouseEventArgs args) => { /* handle callback */ }), - EventCallback(nameof(EventCallbackParams.OnSomething), () => { /* handle callback */ }) - ); - - // Using parameter builder - var cut3 = ctx.RenderComponent(parameters => parameters - .Add(p => p.OnClick, args => { /* handle callback */ }) - .Add(p => p.OnSomething, () => { /* handle callback */ }) - ); - } - - [Fact] - public void HtmlAsChildContent() - { - using var ctx = new TestContext(); - - // Using factory method - var cut1 = ctx.RenderComponent( - ChildContent("

Hello World

") - ); - - // Using parameter builder - var cut2 = ctx.RenderComponent(parameters => parameters - .AddChildContent("

Hello World

") - ); - } - - [Fact] - public void ComponentAsChildContent() - { - using var ctx = new TestContext(); - - // Using factory method - var cut1 = ctx.RenderComponent( - ChildContent() - ); - - // Using parameter builder - var cut2 = ctx.RenderComponent(parameters => parameters - .AddChildContent() - ); - } - - [Fact] - public void ComponentWithParamsAsChildContent() - { - using var ctx = new TestContext(); - - // Using factory method - var cut1 = ctx.RenderComponent( - ChildContent( - ("Heading", "Alert heading"), - ("Type", AlertType.Warning), - ChildContent("

Hello World

") - ) - ); - - // Using parameter builder - var cut2 = ctx.RenderComponent(parameters => parameters - .AddChildContent(alertParameters => alertParameters - .Add(p => p.Heading, "Alert heading") - .Add(p => p.Type, AlertType.Warning) - .AddChildContent("

Hello World

") - ) - ); - } - - [Fact] - public void ComponentAndMarkupAsChildContent() - { - using var ctx = new TestContext(); - - // Using factory method - var cut1 = ctx.RenderComponent( - ChildContent("

Below you will find a most interesting alert!

"), - ChildContent( - ("Heading", "Alert heading"), - ("Type", AlertType.Warning), - ChildContent("

Hello World

") - ) - ); - - // Using parameter builder - var cut2 = ctx.RenderComponent(parameters => parameters - .AddChildContent("

Below you will find a most interesting alert!

") - .AddChildContent(childParams => childParams - .Add(p => p.Heading, "Alert heading") - .Add(p => p.Type, AlertType.Warning) - .AddChildContent("

Hello World

") - ) - ); - } - - [Fact] - public void HtmlAsRenderFragment() - { - using var ctx = new TestContext(); - - // Using factory method - var cut1 = ctx.RenderComponent( - RenderFragment("Content", "

Hello World

") - ); - - // Using parameter builder - var cut2 = ctx.RenderComponent(parameters => parameters - .Add(p => p.Content, "

Hello World

") - ); - } - - [Fact] - public void ComponentAsRenderFragment() - { - using var ctx = new TestContext(); - - // Using factory method - var cut1 = ctx.RenderComponent( - RenderFragment("Content") - ); - - // Using parameter builder - var cut2 = ctx.RenderComponent(parameters => parameters - .Add(p => p.Content) - ); - } - - [Fact] - public void ComponentWithParamsAsRenderFragment() - { - using var ctx = new TestContext(); - - // Using factory method - var cut1 = ctx.RenderComponent( - RenderFragment("Content", - ("Heading", "Alert heading"), - ("Type", AlertType.Warning), - ChildContent("

Hello World

") - ) - ); - - // Using parameter builder - var cut2 = ctx.RenderComponent(parameters => parameters - .Add(p => p.Content, alertParameters => alertParameters - .Add(p => p.Heading, "Alert heading") - .Add(p => p.Type, AlertType.Warning) - .AddChildContent("

Hello World

") - ) - ); - } - - [Fact] - public void ComponentAndMarkupAsRenderFragment() - { - using var ctx = new TestContext(); - - // Using factory method - var cut1 = ctx.RenderComponent( - RenderFragment("Content", "

Below you will find a most interesting alert!

"), - RenderFragment("Content", - ("Heading", "Alert heading"), - ("Type", AlertType.Warning), - ChildContent("

Hello World

") - ) - ); - - // Using parameter builder - var cut2 = ctx.RenderComponent(parameters => parameters - .Add(p => p.Content, "

Below you will find a most interesting alert!

") - .Add(p => p.Content, childParams => childParams - .Add(p => p.Heading, "Alert heading") - .Add(p => p.Type, AlertType.Warning) - .AddChildContent("

Hello World

") - ) - ); - } - - [Fact] - public void HtmlTemplateParams() - { - using var ctx = new TestContext(); - - // Using factory method - var cut1 = ctx.RenderComponent>( - ("Items", new string[] { "Foo", "Bar", "Baz" }), - Template("Template", item => $"{item}") - ); - - // Using parameter builder - var cut2 = ctx.RenderComponent>(parameters => parameters - .Add(p => p.Items, new[] { "Foo", "Bar", "Baz" }) - .Add(p => p.Template, item => $"{item}") - ); - } - - [Fact] - public void HtmlAndComponentTemplateParams() - { - using var ctx = new TestContext(); - - // Using factory method - var cut1 = ctx.RenderComponent>( - ("Items", new string[] { "Foo", "Bar", "Baz" }), - Template("Template", value => new ComponentParameter[] { - ("Value", value) - }) - ); - - // Using parameter builder - var cut2 = ctx.RenderComponent>(parameters => parameters - .Add(p => p.Items, new[] { "Foo", "Bar", "Baz" }) - .Add(p => p.Template, value => itemParams => itemParams - .Add(p => p.Value, value) - ) - ); - } - - [Fact] - public void UnmatchedParamsTest() - { - using var ctx = new TestContext(); - - // Using factory method - var cut1 = ctx.RenderComponent( - ("some-unknown-param", "a value") - ); - - // Using parameter builder - var cut2 = ctx.RenderComponent(parameters => parameters - .AddUnmatched("some-unknown-param", "a value") - ); - } - - [Fact] - public void UnnamedCascadingParamsTest() - { - using var ctx = new TestContext(); - var isDarkTheme = true; - - // Using factory method - var cut1 = ctx.RenderComponent( - CascadingValue(isDarkTheme) - ); - - // Using parameter builder - var cut2 = ctx.RenderComponent(parameters => parameters - .AddCascadingValue(isDarkTheme) - ); - - // Using parameter builder and selecting unnamed cascading parameter - var cut3 = ctx.RenderComponent(parameters => parameters - .Add(p => p.IsDarkTheme, isDarkTheme) - ); - } - - [Fact] - public void NamedCascadingParamsTest() - { - using var ctx = new TestContext(); - - // Using factory method - var cut1 = ctx.RenderComponent( - CascadingValue("LoggedInUser", "Egil Hansen") - ); - - // Using parameter builder - var cut2 = ctx.RenderComponent(parameters => parameters - .Add(p => p.UserName, "Egil Hansen") - ); - } - - [Fact] - public void UnnamedAndNamedCascadingParamsTest() - { - using var ctx = new TestContext(); - var isDarkTheme = true; - - // Using factory method - var cut1 = ctx.RenderComponent( - CascadingValue(isDarkTheme), - CascadingValue("LoggedInUser", "Egil Hansen"), - CascadingValue("LoggedInEmail", "egil@example.com") - ); - - // Using parameter builder - var cut2 = ctx.RenderComponent(parameters => parameters - .AddCascadingValue(isDarkTheme) - .Add(p => p.UserName, "Egil Hansen") - .Add(p => p.Email, "egil@example.com") - ); - - // Using parameter builder and selecting unnamed cascading parameter - var cut3 = ctx.RenderComponent(parameters => parameters - .Add(p => p.IsDarkTheme, isDarkTheme) - .Add(p => p.UserName, "Egil Hansen") - .Add(p => p.Email, "egil@example.com") - ); - } + var isDarkTheme = true; + + // Using factory method + var cut1 = RenderComponent( + CascadingValue(isDarkTheme), + CascadingValue("LoggedInUser", "Egil Hansen"), + CascadingValue("LoggedInEmail", "egil@example.com") + ); + + // Using parameter builder + var cut2 = RenderComponent(parameters => parameters + .AddCascadingValue(isDarkTheme) + .Add(p => p.UserName, "Egil Hansen") + .Add(p => p.Email, "egil@example.com") + ); + + // Using parameter builder and selecting unnamed cascading parameter + var cut3 = RenderComponent(parameters => parameters + .Add(p => p.IsDarkTheme, isDarkTheme) + .Add(p => p.UserName, "Egil Hansen") + .Add(p => p.Email, "egil@example.com") + ); } -} +} \ No newline at end of file diff --git a/docs/samples/tests/xunit/AsyncDataTest.cs b/docs/samples/tests/xunit/AsyncDataTest.cs index 42e87765e..edb90e0cc 100644 --- a/docs/samples/tests/xunit/AsyncDataTest.cs +++ b/docs/samples/tests/xunit/AsyncDataTest.cs @@ -4,66 +4,62 @@ using System; using System.Threading.Tasks; -namespace Bunit.Docs.Samples +namespace Bunit.Docs.Samples; + +public class AsyncDataTest : TestContext { - public class AsyncDataTest + [Fact] + public void LoadDataAsync() { - [Fact] - public void LoadDataAsync() - { - // Arrange - using var ctx = new TestContext(); - var textService = new TaskCompletionSource(); - var cut = ctx.RenderComponent(parameters => parameters - .Add(p => p.TextService, textService.Task) - ); + // Arrange + var textService = new TaskCompletionSource(); + var cut = RenderComponent(parameters => parameters + .Add(p => p.TextService, textService.Task) + ); - // Act - set the awaited result from the text service - textService.SetResult("Hello World"); + // Act - set the awaited result from the text service + textService.SetResult("Hello World"); - // Wait for state before continuing test - cut.WaitForState(() => cut.Find("p").TextContent == "Hello World"); + // Wait for state before continuing test + cut.WaitForState(() => cut.Find("p").TextContent == "Hello World"); - // Assert - verify result has been set - cut.MarkupMatches("

Hello World

"); - } + // Assert - verify result has been set + cut.MarkupMatches("

Hello World

"); + } - [Fact] - public void LoadDataAsyncWithTimeout() - { - // Arrange - using var ctx = new TestContext(); - var textService = new TaskCompletionSource(); - var cut = ctx.RenderComponent(parameters => parameters - .Add(p => p.TextService, textService.Task) - ); + [Fact] + public void LoadDataAsyncWithTimeout() + { + // Arrange + var textService = new TaskCompletionSource(); + var cut = RenderComponent(parameters => parameters + .Add(p => p.TextService, textService.Task) + ); - // Act - set the awaited result from the text service - textService.SetResult("Long time"); + // Act - set the awaited result from the text service + textService.SetResult("Long time"); - // Wait for state before continuing test - cut.WaitForState(() => cut.Find("p").TextContent == "Long time", TimeSpan.FromSeconds(2)); + // Wait for state before continuing test + cut.WaitForState(() => cut.Find("p").TextContent == "Long time", TimeSpan.FromSeconds(2)); - // Assert - verify result has been set - cut.MarkupMatches("

Long time

"); - } + // Assert - verify result has been set + cut.MarkupMatches("

Long time

"); + } - [Fact] - public void LoadDataAsyncAssertion() - { - // Arrange - using var ctx = new TestContext(); - var textService = new TaskCompletionSource(); - var cut = ctx.RenderComponent(parameters => parameters - .Add(p => p.TextService, textService.Task) - ); + [Fact] + public void LoadDataAsyncAssertion() + { + // Arrange + var textService = new TaskCompletionSource(); + var cut = RenderComponent(parameters => parameters + .Add(p => p.TextService, textService.Task) + ); - // Act - set the awaited result from the text service - textService.SetResult("Hello World"); + // Act - set the awaited result from the text service + textService.SetResult("Hello World"); - // Wait for assertion to pass - cut.WaitForAssertion(() => cut.MarkupMatches("

Hello World

")); - cut.WaitForAssertion(() => cut.MarkupMatches("

Hello World

"), TimeSpan.FromSeconds(2)); - } + // Wait for assertion to pass + cut.WaitForAssertion(() => cut.MarkupMatches("

Hello World

")); + cut.WaitForAssertion(() => cut.MarkupMatches("

Hello World

"), TimeSpan.FromSeconds(2)); } -} +} \ No newline at end of file diff --git a/docs/samples/tests/xunit/CascadingParams1Test.cs b/docs/samples/tests/xunit/CascadingParams1Test.cs index 77858c7d1..a6816f45c 100644 --- a/docs/samples/tests/xunit/CascadingParams1Test.cs +++ b/docs/samples/tests/xunit/CascadingParams1Test.cs @@ -6,20 +6,17 @@ using Microsoft.AspNetCore.Components.Web; using Bunit.Rendering; -namespace Bunit.Docs.Samples +namespace Bunit.Docs.Samples; + +public class CascadingParams1Test : TestContext { - public class CascadingParams1Test + [Fact] + public void Test() { - [Fact] - public void Test() - { - using var ctx = new TestContext(); - - var isDarkTheme = true; + var isDarkTheme = true; - var cut = ctx.RenderComponent(parameters => parameters - .Add(p => p.IsDarkTheme, isDarkTheme) - ); - } + var cut = RenderComponent(parameters => parameters + .Add(p => p.IsDarkTheme, isDarkTheme) + ); } } \ No newline at end of file diff --git a/docs/samples/tests/xunit/CascadingParams2Test.cs b/docs/samples/tests/xunit/CascadingParams2Test.cs index 17ae32032..2d72965e8 100644 --- a/docs/samples/tests/xunit/CascadingParams2Test.cs +++ b/docs/samples/tests/xunit/CascadingParams2Test.cs @@ -6,18 +6,15 @@ using Microsoft.AspNetCore.Components.Web; using Bunit.Rendering; -namespace Bunit.Docs.Samples +namespace Bunit.Docs.Samples; + +public class CascadingParams2Test : TestContext { - public class CascadingParams2Test + [Fact] + public void Test() { - [Fact] - public void Test() - { - using var ctx = new TestContext(); - - var cut = ctx.RenderComponent(parameters => parameters - .Add(p => p.UserName, "Name of User") - ); - } + var cut = RenderComponent(parameters => parameters + .Add(p => p.UserName, "Name of User") + ); } } \ No newline at end of file diff --git a/docs/samples/tests/xunit/CascadingParams3Test.cs b/docs/samples/tests/xunit/CascadingParams3Test.cs index 574dc2bab..23e736fff 100644 --- a/docs/samples/tests/xunit/CascadingParams3Test.cs +++ b/docs/samples/tests/xunit/CascadingParams3Test.cs @@ -6,22 +6,19 @@ using Microsoft.AspNetCore.Components.Web; using Bunit.Rendering; -namespace Bunit.Docs.Samples +namespace Bunit.Docs.Samples; + +public class CascadingParams3Test : TestContext { - public class CascadingParams3Test + [Fact] + public void Test() { - [Fact] - public void Test() - { - using var ctx = new TestContext(); - - var isDarkTheme = true; + var isDarkTheme = true; - var cut = ctx.RenderComponent(parameters => parameters - .Add(p => p.IsDarkTheme, isDarkTheme) - .Add(p => p.UserName, "Name of User") - .Add(p => p.Email, "user@example.com") - ); - } + var cut = RenderComponent(parameters => parameters + .Add(p => p.IsDarkTheme, isDarkTheme) + .Add(p => p.UserName, "Name of User") + .Add(p => p.Email, "user@example.com") + ); } } \ No newline at end of file diff --git a/docs/samples/tests/xunit/ChildContentParams1Test.cs b/docs/samples/tests/xunit/ChildContentParams1Test.cs index 5a9f2838c..87299ec7b 100644 --- a/docs/samples/tests/xunit/ChildContentParams1Test.cs +++ b/docs/samples/tests/xunit/ChildContentParams1Test.cs @@ -6,18 +6,15 @@ using Microsoft.AspNetCore.Components.Web; using Bunit.Rendering; -namespace Bunit.Docs.Samples +namespace Bunit.Docs.Samples; + +public class ChildContentParams1Test : TestContext { - public class ChildContentParams1Test + [Fact] + public void Test() { - [Fact] - public void Test() - { - using var ctx = new TestContext(); - - var cut = ctx.RenderComponent(parameters => parameters - .AddChildContent("

Hello World

") - ); - } + var cut = RenderComponent(parameters => parameters + .AddChildContent("

Hello World

") + ); } } \ No newline at end of file diff --git a/docs/samples/tests/xunit/ChildContentParams2Test.cs b/docs/samples/tests/xunit/ChildContentParams2Test.cs index f2efe836d..cc2e57c74 100644 --- a/docs/samples/tests/xunit/ChildContentParams2Test.cs +++ b/docs/samples/tests/xunit/ChildContentParams2Test.cs @@ -6,18 +6,15 @@ using Microsoft.AspNetCore.Components.Web; using Bunit.Rendering; -namespace Bunit.Docs.Samples +namespace Bunit.Docs.Samples; + +public class ChildContentParams2Test : TestContext { - public class ChildContentParams2Test + [Fact] + public void Test() { - [Fact] - public void Test() - { - using var ctx = new TestContext(); - - var cut = ctx.RenderComponent(parameters => parameters - .AddChildContent() - ); - } + var cut = RenderComponent(parameters => parameters + .AddChildContent() + ); } } \ No newline at end of file diff --git a/docs/samples/tests/xunit/ChildContentParams3Test.cs b/docs/samples/tests/xunit/ChildContentParams3Test.cs index ccc3ad4c0..58aaa4d98 100644 --- a/docs/samples/tests/xunit/ChildContentParams3Test.cs +++ b/docs/samples/tests/xunit/ChildContentParams3Test.cs @@ -6,22 +6,19 @@ using Microsoft.AspNetCore.Components.Web; using Bunit.Rendering; -namespace Bunit.Docs.Samples +namespace Bunit.Docs.Samples; + +public class ChildContentParams3Test : TestContext { - public class ChildContentParams3Test + [Fact] + public void Test() { - [Fact] - public void Test() - { - using var ctx = new TestContext(); - - var cut = ctx.RenderComponent(parameters => parameters - .AddChildContent(alertParameters => alertParameters - .Add(p => p.Heading, "Alert heading") - .Add(p => p.Type, AlertType.Warning) - .AddChildContent("

Hello World

") - ) - ); - } + var cut = RenderComponent(parameters => parameters + .AddChildContent(alertParameters => alertParameters + .Add(p => p.Heading, "Alert heading") + .Add(p => p.Type, AlertType.Warning) + .AddChildContent("

Hello World

") + ) + ); } } \ No newline at end of file diff --git a/docs/samples/tests/xunit/ChildContentParams4Test.cs b/docs/samples/tests/xunit/ChildContentParams4Test.cs index 863f2dc69..cbbf4e0b6 100644 --- a/docs/samples/tests/xunit/ChildContentParams4Test.cs +++ b/docs/samples/tests/xunit/ChildContentParams4Test.cs @@ -6,23 +6,20 @@ using Microsoft.AspNetCore.Components.Web; using Bunit.Rendering; -namespace Bunit.Docs.Samples +namespace Bunit.Docs.Samples; + +public class ChildContentParams4Test : TestContext { - public class ChildContentParams4Test + [Fact] + public void Test() { - [Fact] - public void Test() - { - using var ctx = new TestContext(); - - var cut = ctx.RenderComponent(parameters => parameters - .AddChildContent("

Below you will find a most interesting alert!

") - .AddChildContent(childParams => childParams - .Add(p => p.Heading, "Alert heading") - .Add(p => p.Type, AlertType.Warning) - .AddChildContent("

Hello World

") - ) - ); - } + var cut = RenderComponent(parameters => parameters + .AddChildContent("

Below you will find a most interesting alert!

") + .AddChildContent(childParams => childParams + .Add(p => p.Heading, "Alert heading") + .Add(p => p.Type, AlertType.Warning) + .AddChildContent("

Hello World

") + ) + ); } } \ No newline at end of file diff --git a/docs/samples/tests/xunit/ClickMeTest.cs b/docs/samples/tests/xunit/ClickMeTest.cs index 57731fae8..4e6a2186e 100644 --- a/docs/samples/tests/xunit/ClickMeTest.cs +++ b/docs/samples/tests/xunit/ClickMeTest.cs @@ -2,25 +2,23 @@ using Xunit; using Bunit; -namespace Bunit.Docs.Samples +namespace Bunit.Docs.Samples; + +public class ClickMeTest : TestContext { - public class ClickMeTest + [Fact] + public void Test() { - [Fact] - public void Test() - { - // Arrange - using var ctx = new TestContext(); - var cut = ctx.RenderComponent(); - var buttonElement = cut.Find("button"); + // Arrange + var cut = RenderComponent(); + var buttonElement = cut.Find("button"); - // Act - buttonElement.Click(); - buttonElement.Click(detail: 3, ctrlKey: true); - buttonElement.Click(new MouseEventArgs()); + // Act + buttonElement.Click(); + buttonElement.Click(detail: 3, ctrlKey: true); + buttonElement.Click(new MouseEventArgs()); - // Assert - // ... - } + // Assert + // ... } -} +} \ No newline at end of file diff --git a/docs/samples/tests/xunit/ComponentFactoryExampleTest.cs b/docs/samples/tests/xunit/ComponentFactoryExampleTest.cs index c52fe4169..580ab4096 100644 --- a/docs/samples/tests/xunit/ComponentFactoryExampleTest.cs +++ b/docs/samples/tests/xunit/ComponentFactoryExampleTest.cs @@ -6,25 +6,24 @@ namespace Bunit.Docs.Samples { - public class ComponentFactoryExampleTest + public class ComponentFactoryExampleTest : TestContext + { + [Fact] + public void ReplacesFooWithBarDuringTest() { - [Fact] - public void ReplacesFooWithBarDuringTest() - { - // Arrange - using var ctx = new TestContext(); - ctx.ComponentFactories.Add(new FooBarComponentFactory()); + // Arrange + ComponentFactories.Add(new FooBarComponentFactory()); - // Act - var cut = ctx.RenderComponent(parameters => parameters - .AddChildContent()); + // Act + var cut = RenderComponent(parameters => parameters + .AddChildContent()); - // Assert that there are no in render tree, - // but there is one in the render tree. - Assert.Empty(cut.FindComponents()); - Assert.Equal(1, cut.FindComponents().Count); - } + // Assert that there are no in render tree, + // but there is one in the render tree. + Assert.Empty(cut.FindComponents()); + Assert.Equal(1, cut.FindComponents().Count); } + } } #endif \ No newline at end of file diff --git a/docs/samples/tests/xunit/CounterTest.cs b/docs/samples/tests/xunit/CounterTest.cs index 075f209fa..366a3f5f4 100644 --- a/docs/samples/tests/xunit/CounterTest.cs +++ b/docs/samples/tests/xunit/CounterTest.cs @@ -1,22 +1,21 @@ using Xunit; using Bunit; -namespace Bunit.Docs.Samples +namespace Bunit.Docs.Samples; + +public class CounterTest : TestContext { - public class CounterTest : TestContext + [Fact] + public void CounterShouldIncrementWhenClicked() { - [Fact] - public void CounterShouldIncrementWhenClicked() - { - // Arrange: render the Counter.razor component - var cut = RenderComponent(); + // Arrange: render the Counter.razor component + var cut = RenderComponent(); - // Act: find and click the