From 090c782f2ff510a3a7c4ca8f326897a88cd9a00b Mon Sep 17 00:00:00 2001 From: bUnit bot Date: Sun, 12 Jan 2025 14:57:40 +0000 Subject: [PATCH 1/8] Set version to '1.39-preview' --- version.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/version.json b/version.json index 2983632ed..16a7c71ab 100644 --- a/version.json +++ b/version.json @@ -1,6 +1,6 @@ { "$schema": "https://raw.githubusercontent.com/dotnet/Nerdbank.GitVersioning/main/src/NerdBank.GitVersioning/version.schema.json", - "version": "1.38-preview", + "version": "1.39-preview", "assemblyVersion": { "precision": "revision" }, From 3f1ca07ae9efe1b0872bb6c910720532f6914331 Mon Sep 17 00:00:00 2001 From: Steven Giesel Date: Wed, 15 Jan 2025 16:34:09 +0100 Subject: [PATCH 2/8] chore: Upgrade packages --- Directory.Packages.props | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/Directory.Packages.props b/Directory.Packages.props index 2ea5bcd6f..d9524dcef 100644 --- a/Directory.Packages.props +++ b/Directory.Packages.props @@ -97,16 +97,16 @@ - - - - - - - - - - + + + + + + + + + + @@ -122,7 +122,7 @@ - + From a689c162a248c974de44964b5c62f4ec4b40debe Mon Sep 17 00:00:00 2001 From: Steven Giesel Date: Wed, 15 Jan 2025 18:59:11 +0100 Subject: [PATCH 3/8] chore: Upgrade SA --- Directory.Packages.props | 4 ++-- tests/bunit.core.tests/Rendering/RenderModeTests.razor | 2 +- .../FakePersistentComponentStateTest.cs | 2 +- .../BlazorE2E/AddRemoveChildComponents.razor | 2 +- tests/bunit.testassets/BlazorE2E/DataDashComponent.razor | 2 +- .../BlazorE2E/DuplicateAttributesComponent.razor | 2 +- .../BlazorE2E/KeyPressEventComponent.razor | 2 +- .../bunit.testassets/BlazorE2E/MarkupBlockComponent.razor | 2 +- .../BlazorE2E/MovingCheckboxesComponent.razor | 4 ++-- tests/bunit.testassets/BlazorE2E/OrderedList.razor | 2 +- .../SampleComponents/AsyncRenderChangesProperty.razor | 2 +- .../SampleComponents/InvokeAsyncInsideContinueWith.razor | 6 +++--- .../bunit.testassets/SampleComponents/RenderOnClick.razor | 7 +++++-- .../SampleComponents/SimpleUsingLocalizer.razor | 2 +- .../SampleComponents/SimpleWithTemplate.razor | 2 +- .../SampleComponents/ToggleableDetails.razor | 2 +- tests/bunit.web.tests/Asserting/MarkupMatchesTests.razor | 8 ++------ 17 files changed, 26 insertions(+), 27 deletions(-) diff --git a/Directory.Packages.props b/Directory.Packages.props index d9524dcef..7c79b36a3 100644 --- a/Directory.Packages.props +++ b/Directory.Packages.props @@ -6,7 +6,7 @@ - + @@ -28,7 +28,7 @@ - + diff --git a/tests/bunit.core.tests/Rendering/RenderModeTests.razor b/tests/bunit.core.tests/Rendering/RenderModeTests.razor index 0bded05f6..557b3386e 100644 --- a/tests/bunit.core.tests/Rendering/RenderModeTests.razor +++ b/tests/bunit.core.tests/Rendering/RenderModeTests.razor @@ -168,7 +168,7 @@ ); - act.ShouldThrow(); // todo: figure out good exception to use + act.ShouldThrow(); } } @code{ diff --git a/tests/bunit.core.tests/TestDoubles/PersistentComponentState/FakePersistentComponentStateTest.cs b/tests/bunit.core.tests/TestDoubles/PersistentComponentState/FakePersistentComponentStateTest.cs index cb3d256a2..f54aa345c 100644 --- a/tests/bunit.core.tests/TestDoubles/PersistentComponentState/FakePersistentComponentStateTest.cs +++ b/tests/bunit.core.tests/TestDoubles/PersistentComponentState/FakePersistentComponentStateTest.cs @@ -67,7 +67,7 @@ public void Test013(string key) { var fakeState = this.AddFakePersistentComponentState(); - fakeState.TryTake(key, out var actual).ShouldBeFalse(); + fakeState.TryTake(key, out _).ShouldBeFalse(); } [Fact(DisplayName = "TriggerOnPersisting triggers OnPersisting callbacks added to store")] diff --git a/tests/bunit.testassets/BlazorE2E/AddRemoveChildComponents.razor b/tests/bunit.testassets/BlazorE2E/AddRemoveChildComponents.razor index 1c05a7166..ba4bca194 100644 --- a/tests/bunit.testassets/BlazorE2E/AddRemoveChildComponents.razor +++ b/tests/bunit.testassets/BlazorE2E/AddRemoveChildComponents.razor @@ -10,7 +10,7 @@ Child components follow. @code { int numAdded = 0; - List currentChildrenMessages = new List(); + private readonly List currentChildrenMessages = new List(); void AddChild() { diff --git a/tests/bunit.testassets/BlazorE2E/DataDashComponent.razor b/tests/bunit.testassets/BlazorE2E/DataDashComponent.razor index 435ef0fc0..06567bb4a 100644 --- a/tests/bunit.testassets/BlazorE2E/DataDashComponent.razor +++ b/tests/bunit.testassets/BlazorE2E/DataDashComponent.razor @@ -1,5 +1,5 @@
@TabId
@code { - string TabId = "17"; + private readonly string TabId = "17"; } diff --git a/tests/bunit.testassets/BlazorE2E/DuplicateAttributesComponent.razor b/tests/bunit.testassets/BlazorE2E/DuplicateAttributesComponent.razor index 20899324f..837da0f95 100644 --- a/tests/bunit.testassets/BlazorE2E/DuplicateAttributesComponent.razor +++ b/tests/bunit.testassets/BlazorE2E/DuplicateAttributesComponent.razor @@ -13,7 +13,7 @@ @functions { - Dictionary elementValues = new Dictionary + private readonly Dictionary elementValues = new Dictionary { { "bool", true }, { "string", "middle-value" }, diff --git a/tests/bunit.testassets/BlazorE2E/KeyPressEventComponent.razor b/tests/bunit.testassets/BlazorE2E/KeyPressEventComponent.razor index dd96e41d5..d5931408d 100644 --- a/tests/bunit.testassets/BlazorE2E/KeyPressEventComponent.razor +++ b/tests/bunit.testassets/BlazorE2E/KeyPressEventComponent.razor @@ -9,7 +9,7 @@ Type here: @code { - List keysPressed = new List(); + private readonly List keysPressed = new List(); void OnKeyPressed(KeyboardEventArgs eventArgs) { diff --git a/tests/bunit.testassets/BlazorE2E/MarkupBlockComponent.razor b/tests/bunit.testassets/BlazorE2E/MarkupBlockComponent.razor index ee7f9a185..1b9597319 100644 --- a/tests/bunit.testassets/BlazorE2E/MarkupBlockComponent.razor +++ b/tests/bunit.testassets/BlazorE2E/MarkupBlockComponent.razor @@ -28,7 +28,7 @@ #nullable disable bool changeOutput; - string myMarkup = "

This is a markup string.

"; + private readonly string myMarkup = "

This is a markup string.

"; void EmitMarkupBlock(RenderTreeBuilder builder) { diff --git a/tests/bunit.testassets/BlazorE2E/MovingCheckboxesComponent.razor b/tests/bunit.testassets/BlazorE2E/MovingCheckboxesComponent.razor index fbb1f4cf5..872b35bc2 100644 --- a/tests/bunit.testassets/BlazorE2E/MovingCheckboxesComponent.razor +++ b/tests/bunit.testassets/BlazorE2E/MovingCheckboxesComponent.razor @@ -41,7 +41,7 @@ @code { #nullable disable - List items = new List + private readonly List items = new List { new TodoItem { Text = "Alpha" }, new TodoItem { Text = "Beta" }, @@ -49,7 +49,7 @@ new TodoItem { Text = "Delta", IsDone = true }, }; - class TodoItem + private sealed class TodoItem { public bool IsDone { get; set; } public string Text { get; set; } diff --git a/tests/bunit.testassets/BlazorE2E/OrderedList.razor b/tests/bunit.testassets/BlazorE2E/OrderedList.razor index 96130629b..f7a712635 100644 --- a/tests/bunit.testassets/BlazorE2E/OrderedList.razor +++ b/tests/bunit.testassets/BlazorE2E/OrderedList.razor @@ -6,7 +6,7 @@ } @foreach (var item in Items) { - @Template(new Context { Index = index++, Item = item, }); + @Template(new Context { Index = index++, Item = item, }) } diff --git a/tests/bunit.testassets/SampleComponents/AsyncRenderChangesProperty.razor b/tests/bunit.testassets/SampleComponents/AsyncRenderChangesProperty.razor index e4368832a..4e68b7eb6 100644 --- a/tests/bunit.testassets/SampleComponents/AsyncRenderChangesProperty.razor +++ b/tests/bunit.testassets/SampleComponents/AsyncRenderChangesProperty.razor @@ -1,7 +1,7 @@ @code { - private TaskCompletionSource _tcs = new TaskCompletionSource(); + private readonly TaskCompletionSource _tcs = new TaskCompletionSource(); public int Counter; private Task Tick() diff --git a/tests/bunit.testassets/SampleComponents/InvokeAsyncInsideContinueWith.razor b/tests/bunit.testassets/SampleComponents/InvokeAsyncInsideContinueWith.razor index 9be4161b2..1abdf2cd8 100644 --- a/tests/bunit.testassets/SampleComponents/InvokeAsyncInsideContinueWith.razor +++ b/tests/bunit.testassets/SampleComponents/InvokeAsyncInsideContinueWith.razor @@ -22,13 +22,13 @@ { registeredTask = task; delegatedTask = task == null ? null : DelegateTo(task); - RenderWhenDone(); + _ = RenderWhenDone(); } base.OnParametersSet(); } - private async void RenderWhenDone() + private async Task RenderWhenDone() { var task = delegatedTask; if (task != null) @@ -44,7 +44,7 @@ private static async Task DelegateTo(Task task) { - await task;//.ConfigureAwait(false); + await task; return null; } } diff --git a/tests/bunit.testassets/SampleComponents/RenderOnClick.razor b/tests/bunit.testassets/SampleComponents/RenderOnClick.razor index d5ed71b16..b42b04388 100644 --- a/tests/bunit.testassets/SampleComponents/RenderOnClick.razor +++ b/tests/bunit.testassets/SampleComponents/RenderOnClick.razor @@ -2,8 +2,11 @@ @code { public int RenderCount { get; private set; } - - void IncreaseCount() { } + + void IncreaseCount() + { + // Left empty on purpose + } protected override void OnAfterRender(bool firstRender) => RenderCount++; } \ No newline at end of file diff --git a/tests/bunit.testassets/SampleComponents/SimpleUsingLocalizer.razor b/tests/bunit.testassets/SampleComponents/SimpleUsingLocalizer.razor index 9992ee117..d077d54b0 100644 --- a/tests/bunit.testassets/SampleComponents/SimpleUsingLocalizer.razor +++ b/tests/bunit.testassets/SampleComponents/SimpleUsingLocalizer.razor @@ -6,7 +6,7 @@ @code { protected override void OnInitialized() { - var localizedString = StringLocalizer["StringName"]; + _ = StringLocalizer["StringName"]; } } diff --git a/tests/bunit.testassets/SampleComponents/SimpleWithTemplate.razor b/tests/bunit.testassets/SampleComponents/SimpleWithTemplate.razor index 0ba4abec3..700fcdc83 100644 --- a/tests/bunit.testassets/SampleComponents/SimpleWithTemplate.razor +++ b/tests/bunit.testassets/SampleComponents/SimpleWithTemplate.razor @@ -1,7 +1,7 @@ @typeparam T @foreach (var d in Data) { - @Template?.Invoke(d); + @Template?.Invoke(d) } @code { diff --git a/tests/bunit.testassets/SampleComponents/ToggleableDetails.razor b/tests/bunit.testassets/SampleComponents/ToggleableDetails.razor index 5dcb306e3..b1cf9da25 100644 --- a/tests/bunit.testassets/SampleComponents/ToggleableDetails.razor +++ b/tests/bunit.testassets/SampleComponents/ToggleableDetails.razor @@ -3,7 +3,7 @@ {

Read the details carefully!

} -
+
Summary

Detailed content

diff --git a/tests/bunit.web.tests/Asserting/MarkupMatchesTests.razor b/tests/bunit.web.tests/Asserting/MarkupMatchesTests.razor index d8723291f..d4b3bf5c4 100644 --- a/tests/bunit.web.tests/Asserting/MarkupMatchesTests.razor +++ b/tests/bunit.web.tests/Asserting/MarkupMatchesTests.razor @@ -1,13 +1,9 @@ -@using Bunit.TestAssets @using Bunit.TestAssets.SampleComponents @inherits TestContext @code { - private readonly ITestOutputHelper outputHelper; - - public MarkupMatchesTests(ITestOutputHelper outputHelper) + public MarkupMatchesTests() { - this.outputHelper = outputHelper; - TestContext.DefaultWaitTimeout = TimeSpan.FromSeconds(30); + DefaultWaitTimeout = TimeSpan.FromSeconds(30); } [Fact] From 2284ed6649e404bbe7c86ea80fbb236ac55c2789 Mon Sep 17 00:00:00 2001 From: Aaron Date: Thu, 16 Jan 2025 11:02:20 -0500 Subject: [PATCH 4/8] =?UTF-8?q?fix(FakeNavigationManager):=20Do=20Not=20se?= =?UTF-8?q?t=20Uri=20if=20navigation=20is=20prevented=E2=80=A6=20(#1649)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * fix(FakeNavigationManager): Do Not set Uri if navigation is prevented on net7.0 or greater * Adding changelog, updating FakeNavigatoinManager to not change baseuri on prevention; updating test case to match. * Also mentioning BaseUri in the changelog. * restructure tests for navigation prevention. * Update CHANGELOG.md Co-authored-by: Steven Giesel --------- Co-authored-by: Steven Giesel --- CHANGELOG.md | 4 ++ .../FakeNavigationManager.cs | 20 ++---- .../FakeNavigationManagerTest.cs | 66 ++++++++++++++----- 3 files changed, 59 insertions(+), 31 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 51081c37a..c1991bd23 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,6 +6,10 @@ All notable changes to **bUnit** will be documented in this file. The project ad ## [Unreleased] +### Fixed + +- Do not set the `Uri` or `BaseUri` property on the `FakeNavigationManager` if navigation is prevented by a handler on `net7.0` or greater. Reported and fixed by [@ayyron-dev](https://github.com/ayyron-dev) in [#1647](https://github.com/bUnit-dev/bUnit/issues/1647) + ## [1.38.5] - 2025-01-12 ### Added diff --git a/src/bunit.web/TestDoubles/NavigationManager/FakeNavigationManager.cs b/src/bunit.web/TestDoubles/NavigationManager/FakeNavigationManager.cs index 574807cf3..85a27b1b4 100644 --- a/src/bunit.web/TestDoubles/NavigationManager/FakeNavigationManager.cs +++ b/src/bunit.web/TestDoubles/NavigationManager/FakeNavigationManager.cs @@ -75,13 +75,6 @@ protected override void NavigateToCore(string uri, NavigationOptions options) var absoluteUri = GetNewAbsoluteUri(uri); var changedBaseUri = HasDifferentBaseUri(absoluteUri); - if (changedBaseUri) - { - BaseUri = GetBaseUri(absoluteUri); - } - - Uri = ToAbsoluteUri(uri).OriginalString; - if (options.ReplaceHistoryEntry && history.Count > 0) history.Pop(); @@ -92,7 +85,6 @@ protected override void NavigateToCore(string uri, NavigationOptions options) testContextBase.Renderer.Dispatcher.InvokeAsync(() => #endif { - Uri = absoluteUri.OriginalString; #if NET7_0_OR_GREATER var shouldContinueNavigation = false; @@ -116,6 +108,12 @@ protected override void NavigateToCore(string uri, NavigationOptions options) history.Push(new NavigationHistory(uri, options)); #endif + if (changedBaseUri) + { + BaseUri = GetBaseUri(absoluteUri); + } + + Uri = absoluteUri.OriginalString; // Only notify of changes if user navigates within the same // base url (domain). Otherwise, the user navigated away @@ -125,17 +123,13 @@ protected override void NavigateToCore(string uri, NavigationOptions options) { NotifyLocationChanged(isInterceptedLink: false); } - else - { - BaseUri = GetBaseUri(absoluteUri); - } }); } #endif #if NET7_0_OR_GREATER /// - protected override void SetNavigationLockState(bool value) {} + protected override void SetNavigationLockState(bool value) { } /// protected override void HandleLocationChangingHandlerException(Exception ex, LocationChangingContext context) diff --git a/tests/bunit.web.tests/TestDoubles/NavigationManager/FakeNavigationManagerTest.cs b/tests/bunit.web.tests/TestDoubles/NavigationManager/FakeNavigationManagerTest.cs index ca09b9423..1578dfe28 100644 --- a/tests/bunit.web.tests/TestDoubles/NavigationManager/FakeNavigationManagerTest.cs +++ b/tests/bunit.web.tests/TestDoubles/NavigationManager/FakeNavigationManagerTest.cs @@ -1,5 +1,6 @@ using System.Text.Json; using Microsoft.AspNetCore.Components.WebAssembly.Authentication; +using Shouldly.ShouldlyExtensionMethods; namespace Bunit.TestDoubles; @@ -106,18 +107,18 @@ public void Test007() } #if !NET6_0_OR_GREATER - [Theory(DisplayName = "NavigateTo(uri, forceLoad) is saved in history")] - [InlineData("/uri", false)] - [InlineData("/anotherUri", true)] - public void Test100(string uri, bool forceLoad) - { - var sut = CreateFakeNavigationManager(); + [Theory(DisplayName = "NavigateTo(uri, forceLoad) is saved in history")] + [InlineData("/uri", false)] + [InlineData("/anotherUri", true)] + public void Test100(string uri, bool forceLoad) + { + var sut = CreateFakeNavigationManager(); - sut.NavigateTo(uri, forceLoad); + sut.NavigateTo(uri, forceLoad); - sut.History.ShouldHaveSingleItem() - .ShouldBeEquivalentTo(new NavigationHistory(uri, new NavigationOptions(forceLoad))); - } + sut.History.ShouldHaveSingleItem() + .ShouldBeEquivalentTo(new NavigationHistory(uri, new NavigationOptions(forceLoad))); + } #endif #if NET6_0_OR_GREATER [Theory(DisplayName = "NavigateTo(uri, forceLoad, replaceHistoryEntry) is saved in history")] @@ -135,8 +136,12 @@ public void Test200(string uri, bool forceLoad, bool replaceHistoryEntry) .ShouldBeEquivalentTo(new NavigationHistory(uri, new NavigationOptions { ForceLoad = forceLoad, ReplaceHistoryEntry = replaceHistoryEntry })); #elif NET7_0_OR_GREATER - var navigationOptions = new NavigationOptions { ForceLoad = forceLoad, ReplaceHistoryEntry = - replaceHistoryEntry }; + var navigationOptions = new NavigationOptions + { + ForceLoad = forceLoad, + ReplaceHistoryEntry = + replaceHistoryEntry + }; sut.History.ShouldHaveSingleItem() .ShouldBeEquivalentTo(new NavigationHistory(uri, navigationOptions, NavigationState.Succeeded)); #endif @@ -156,8 +161,11 @@ public void Test201() new NavigationOptions { ReplaceHistoryEntry = true })); #elif NET7_0_OR_GREATER sut.History.ShouldHaveSingleItem() - .ShouldBeEquivalentTo(new NavigationHistory("/secondUrl", new NavigationOptions { ReplaceHistoryEntry = - true }, NavigationState.Succeeded)); + .ShouldBeEquivalentTo(new NavigationHistory("/secondUrl", new NavigationOptions + { + ReplaceHistoryEntry = + true + }, NavigationState.Succeeded)); #endif } #endif @@ -230,7 +238,8 @@ public void Test013() var fakeNavigationManager = CreateFakeNavigationManager(); var requestOptions = new InteractiveRequestOptions { - ReturnUrl = "return", Interaction = InteractionType.SignIn, + ReturnUrl = "return", + Interaction = InteractionType.SignIn, }; requestOptions.TryAddAdditionalParameter("library", "bunit"); @@ -264,7 +273,7 @@ public void Test015() Should.Throw( () => fakeNavigationManager.History.Last().StateFromJson()); } - + [Fact(DisplayName = "Navigate to url with state should set that state on the NavigationManager")] public void Test016() { @@ -275,7 +284,7 @@ public void Test016() sut.HistoryEntryState.ShouldBe(State); } - + [Fact(DisplayName = "Navigate to url with force reload resets state")] public void Test017() { @@ -283,11 +292,32 @@ public void Test017() var sut = CreateFakeNavigationManager(); sut.NavigateTo("/internal", new NavigationOptions { HistoryEntryState = State }); - sut.NavigateTo("/internal", new NavigationOptions { HistoryEntryState = State, ForceLoad = true}); + sut.NavigateTo("/internal", new NavigationOptions { HistoryEntryState = State, ForceLoad = true }); sut.HistoryEntryState.ShouldBe(null); } + [Theory(DisplayName = "Preventing Navigation does not change Uri or BaseUri")] + [InlineData("/prevented-path")] + [InlineData("https://bunit.dev/uri")] + public void Test018(string navToUri) + { + var sut = CreateFakeNavigationManager(); + using var handler = sut.RegisterLocationChangingHandler(LocationChangingHandler); + + sut.NavigateTo(navToUri); + + sut.History.First().State.ShouldBe(NavigationState.Prevented); + sut.BaseUri.ShouldBe("http://localhost/"); + sut.Uri.ShouldBe("http://localhost/"); + + ValueTask LocationChangingHandler(LocationChangingContext arg) + { + arg.PreventNavigation(); + return ValueTask.CompletedTask; + } + } + private sealed class InterceptNavigateToCounterComponent : ComponentBase { protected override void BuildRenderTree(RenderTreeBuilder builder) From 1cccb7ca4be0c1f771f6c4b890756d38687066cb Mon Sep 17 00:00:00 2001 From: Egil Hansen Date: Sat, 29 Mar 2025 01:51:57 +0000 Subject: [PATCH 5/8] docs: update sponsors link --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 691daaa00..2d9170d9f 100644 --- a/README.md +++ b/README.md @@ -38,7 +38,7 @@ A huge thank you to the [sponsors of bUnit](https://github.com/sponsors/egil). T
- + @syncfusion
Syncfusion From 4f15022e8193ba38daa6354cfdf7c12f44ac20c1 Mon Sep 17 00:00:00 2001 From: Steven Giesel Date: Fri, 4 Apr 2025 17:23:28 +0200 Subject: [PATCH 6/8] fix: bUnit can handle relative units in Markup --- CHANGELOG.md | 1 + src/bunit.web/Rendering/BunitHtmlParser.cs | 12 ++++++++++-- .../ComponentWithRelativeUnitAsWidth.razor | 2 ++ .../Rendering/RenderedComponentTest.cs | 13 +++++++++++++ 4 files changed, 26 insertions(+), 2 deletions(-) create mode 100644 tests/bunit.testassets/SampleComponents/ComponentWithRelativeUnitAsWidth.razor diff --git a/CHANGELOG.md b/CHANGELOG.md index c1991bd23..17778f6f1 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -9,6 +9,7 @@ All notable changes to **bUnit** will be documented in this file. The project ad ### Fixed - Do not set the `Uri` or `BaseUri` property on the `FakeNavigationManager` if navigation is prevented by a handler on `net7.0` or greater. Reported and fixed by [@ayyron-dev](https://github.com/ayyron-dev) in [#1647](https://github.com/bUnit-dev/bUnit/issues/1647) +- Use default renderer properties for AngleSharp. Reported by [@jtleaming](https://github.com/jtleaming) in [#1692]. ## [1.38.5] - 2025-01-12 diff --git a/src/bunit.web/Rendering/BunitHtmlParser.cs b/src/bunit.web/Rendering/BunitHtmlParser.cs index 6f8edb5f7..08093cc0a 100644 --- a/src/bunit.web/Rendering/BunitHtmlParser.cs +++ b/src/bunit.web/Rendering/BunitHtmlParser.cs @@ -1,6 +1,7 @@ using System.Collections; using System.Diagnostics; using AngleSharp; +using AngleSharp.Css; using AngleSharp.Dom; using AngleSharp.Html.Parser; using Bunit.Diffing; @@ -28,7 +29,8 @@ public sealed class BunitHtmlParser : IDisposable /// with a AngleSharp context without a registered. /// public BunitHtmlParser() - : this(Configuration.Default.WithCss().With(new HtmlComparer())) { } + : this(Configuration.Default.WithCss() + .With(new HtmlComparer())) { } /// /// Initializes a new instance of the class @@ -43,7 +45,13 @@ public BunitHtmlParser(HtmlComparer htmlComparer, TestContextBase testContext) private BunitHtmlParser(IConfiguration angleSharpConfiguration) { - var config = angleSharpConfiguration.With(this); + var config = angleSharpConfiguration + .With(this) + .WithRenderDevice(new DefaultRenderDevice + { + ViewPortWidth = 1920, + ViewPortHeight = 1080, + }); context = BrowsingContext.New(config); var parseOptions = new HtmlParserOptions { diff --git a/tests/bunit.testassets/SampleComponents/ComponentWithRelativeUnitAsWidth.razor b/tests/bunit.testassets/SampleComponents/ComponentWithRelativeUnitAsWidth.razor new file mode 100644 index 000000000..69e5a86c7 --- /dev/null +++ b/tests/bunit.testassets/SampleComponents/ComponentWithRelativeUnitAsWidth.razor @@ -0,0 +1,2 @@ +
+
\ No newline at end of file diff --git a/tests/bunit.web.tests/Rendering/RenderedComponentTest.cs b/tests/bunit.web.tests/Rendering/RenderedComponentTest.cs index 412779aad..89b00e548 100644 --- a/tests/bunit.web.tests/Rendering/RenderedComponentTest.cs +++ b/tests/bunit.web.tests/Rendering/RenderedComponentTest.cs @@ -1,3 +1,6 @@ +using AngleSharp; +using AngleSharp.Css; +using AngleSharp.Dom; using Bunit.Rendering; namespace Bunit; @@ -67,4 +70,14 @@ public void Test021() cut.Instance.JSRuntime.ShouldNotBeNull(); } #endif + + [Fact(DisplayName = "Using relative units in style attribute can be retrieved")] + public void Test022() + { + var cut = RenderComponent(); + + var text = cut.Find(".my-component").GetInnerText(); + + text.ShouldNotBeNull(); + } } From f60013ee0bb001991940cd43e2f963ab9831de1c Mon Sep 17 00:00:00 2001 From: Steven Giesel Date: Fri, 4 Apr 2025 17:55:30 +0200 Subject: [PATCH 7/8] fix: Add test for FindComponents with base and derived components --- CHANGELOG.md | 1 + src/bunit.core/Rendering/TestRenderer.cs | 8 ++++- .../Rendering/RenderedComponentTest.cs | 30 +++++++++++++++++++ 3 files changed, 38 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 17778f6f1..887959bbe 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -10,6 +10,7 @@ All notable changes to **bUnit** will be documented in this file. The project ad - Do not set the `Uri` or `BaseUri` property on the `FakeNavigationManager` if navigation is prevented by a handler on `net7.0` or greater. Reported and fixed by [@ayyron-dev](https://github.com/ayyron-dev) in [#1647](https://github.com/bUnit-dev/bUnit/issues/1647) - Use default renderer properties for AngleSharp. Reported by [@jtleaming](https://github.com/jtleaming) in [#1692]. +- `FindComponents` throws an exception, when a base and derived class was searched for. Reported by [@BlueDragon709](https://github.com/BlueDragon709) in [#1691]. ## [1.38.5] - 2025-01-12 diff --git a/src/bunit.core/Rendering/TestRenderer.cs b/src/bunit.core/Rendering/TestRenderer.cs index f26e77fd0..18625e39e 100644 --- a/src/bunit.core/Rendering/TestRenderer.cs +++ b/src/bunit.core/Rendering/TestRenderer.cs @@ -610,7 +610,13 @@ private IRenderedComponentBase GetOrCreateRenderedComponent)renderedComponent; + if (renderedComponent is IRenderedComponentBase typedComponent) + { + return typedComponent; + } + + renderedComponent.Dispose(); + renderedComponents.Remove(componentId); } LoadRenderTreeFrames(componentId, framesCollection); diff --git a/tests/bunit.web.tests/Rendering/RenderedComponentTest.cs b/tests/bunit.web.tests/Rendering/RenderedComponentTest.cs index 89b00e548..1e9e2e806 100644 --- a/tests/bunit.web.tests/Rendering/RenderedComponentTest.cs +++ b/tests/bunit.web.tests/Rendering/RenderedComponentTest.cs @@ -69,6 +69,36 @@ public void Test021() cut.Instance.JSRuntime.ShouldNotBeNull(); } + + [Fact(DisplayName = "Searching first for derived component and then base component finds correct (#1691)")] + public void Test023() + { + var cut = RenderComponent( + ps => ps.AddChildContent() + .AddChildContent()); + + Should.NotThrow(() => + { + cut.FindComponents(); + cut.FindComponents(); + }); + } + + private class BaseComponent : ComponentBase + { + protected override void BuildRenderTree(RenderTreeBuilder builder) + { + builder.AddContent(0, "base"); + } + } + + private sealed class DerivedComponent : BaseComponent + { + protected override void BuildRenderTree(RenderTreeBuilder builder) + { + builder.AddContent(0, "derived"); + } + } #endif [Fact(DisplayName = "Using relative units in style attribute can be retrieved")] From 971e4b8594512b1edfeeb37bd7d9d7dd6caf78df Mon Sep 17 00:00:00 2001 From: bUnit bot Date: Fri, 4 Apr 2025 16:21:15 +0000 Subject: [PATCH 8/8] Set version to '1.39' --- version.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/version.json b/version.json index 16a7c71ab..6bec143ea 100644 --- a/version.json +++ b/version.json @@ -1,6 +1,6 @@ { "$schema": "https://raw.githubusercontent.com/dotnet/Nerdbank.GitVersioning/main/src/NerdBank.GitVersioning/version.schema.json", - "version": "1.39-preview", + "version": "1.39", "assemblyVersion": { "precision": "revision" },