Skip to content

Commit bd66f3f

Browse files
committed
refactor: Move RenderInsideRenderTreeto BunitContext and make it private
1 parent a73989f commit bd66f3f

File tree

3 files changed

+34
-49
lines changed

3 files changed

+34
-49
lines changed

src/bunit/Asserting/MarkupMatchesAssertExtensions.cs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -295,7 +295,7 @@ public static void MarkupMatches(this INode actual, RenderFragment expected, str
295295
ArgumentNullException.ThrowIfNull(actual);
296296
ArgumentNullException.ThrowIfNull(expected);
297297

298-
var renderedFragment = actual.GetBunitContext()?.RenderInsideRenderTree(expected) as RenderedFragment
298+
var renderedFragment = actual.GetBunitContext()?.Render(expected)
299299
?? AdhocRenderRenderFragment(expected);
300300
MarkupMatches(actual, renderedFragment, userMessage);
301301
}
@@ -314,7 +314,7 @@ public static void MarkupMatches(this INodeList actual, RenderFragment expected,
314314
ArgumentNullException.ThrowIfNull(actual);
315315
ArgumentNullException.ThrowIfNull(expected);
316316

317-
var renderedFragment = actual.GetBunitContext()?.RenderInsideRenderTree(expected) as RenderedFragment
317+
var renderedFragment = actual.GetBunitContext()?.Render(expected)
318318
?? AdhocRenderRenderFragment(expected);
319319
MarkupMatches(actual, renderedFragment, userMessage);
320320
}
@@ -413,7 +413,7 @@ public static void MarkupMatches(this IEnumerable<IElement> actual, IEnumerable<
413413
private static RenderedFragment AdhocRenderRenderFragment(this RenderFragment renderFragment)
414414
{
415415
using var ctx = new BunitContext();
416-
return ctx.RenderInsideRenderTree(renderFragment);
416+
return ctx.Render(renderFragment);
417417
}
418418

419419
private static INodeList ToNodeList(this string markup, BunitHtmlParser? htmlParser)

src/bunit/BunitContext.cs

Lines changed: 31 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -170,7 +170,7 @@ public virtual RenderedComponent<TComponent> Render<TComponent>(RenderFragment r
170170
/// <param name="renderFragment">The render fragment to render.</param>
171171
/// <returns>The <see cref="RenderedFragment"/>.</returns>
172172
public virtual RenderedFragment Render(RenderFragment renderFragment)
173-
=> this.RenderInsideRenderTree(renderFragment);
173+
=> RenderInsideRenderTree(renderFragment);
174174

175175
/// <summary>
176176
/// Dummy method required to allow Blazor's compiler to generate
@@ -187,4 +187,34 @@ private BunitRenderer CreateRenderer()
187187
? new BunitRenderer(Services, logger)
188188
: new BunitRenderer(Services, logger, componentActivator);
189189
}
190+
191+
/// <summary>
192+
/// Renders a component, declared in the <paramref name="renderFragment"/>, inside the <see cref="BunitContext.RenderTree"/>.
193+
/// </summary>
194+
/// <typeparam name="TComponent">The type of component to render.</typeparam>
195+
/// <param name="renderFragment">The <see cref="RenderInsideRenderTree"/> that contains a declaration of the component.</param>
196+
/// <returns>A <see cref="RenderedComponent{TComponent}"/>.</returns>
197+
private RenderedComponent<TComponent> RenderInsideRenderTree<TComponent>(RenderFragment renderFragment)
198+
where TComponent : IComponent
199+
{
200+
var baseResult = RenderInsideRenderTree(renderFragment);
201+
return Renderer.FindComponent<TComponent>(baseResult);
202+
}
203+
204+
/// <summary>
205+
/// Renders a fragment, declared in the <paramref name="renderFragment"/>, inside the <see cref="BunitContext.RenderTree"/>.
206+
/// </summary>
207+
/// <param name="renderFragment">The <see cref="RenderInsideRenderTree"/> to render.</param>
208+
/// <returns>A <see cref="RenderedFragment"/>.</returns>
209+
private RenderedComponent<FragmentContainer> RenderInsideRenderTree(RenderFragment renderFragment)
210+
{
211+
// Wrap fragment in a FragmentContainer so the start of the test supplied
212+
// razor fragment can be found after, and then wrap in any layout components
213+
// added to the test context.
214+
var wrappedInFragmentContainer = FragmentContainer.Wrap(renderFragment);
215+
var wrappedInRenderTree = RenderTree.Wrap(wrappedInFragmentContainer);
216+
var resultBase = Renderer.RenderFragment(wrappedInRenderTree);
217+
218+
return Renderer.FindComponent<FragmentContainer>(resultBase);
219+
}
190220
}

src/bunit/Extensions/TestContextRenderExtensions.cs

Lines changed: 0 additions & 45 deletions
This file was deleted.

0 commit comments

Comments
 (0)