1- using Microsoft . AspNetCore . Components ;
1+ using AngleSharp ;
2+ using AngleSharp . Dom ;
3+ using AngleSharp . Html . Parser ;
4+ using AngleSharp . Io ;
5+ using Microsoft . AspNetCore . Components ;
26using System . Collections . Generic ;
37using System . Linq ;
48
59namespace Egil . RazorComponents . Testing . Render
610{
7- public class RenderedComponent < TComponent > where TComponent : IComponent
11+ public class RenderedComponent < TComponent > where TComponent : class , IComponent
812 {
13+ private readonly IBrowsingContext _browsingContext = BrowsingContext . New ( Configuration . Default ) ;
914 private readonly TestRenderer _renderer ;
1015 private readonly ContainerComponent _containerTestRootComponent ;
1116 private int _testComponentId ;
12- private TComponent _testComponentInstance ;
17+ private TComponent ? _testComponentInstance ;
1318
1419 internal RenderedComponent ( TestRenderer renderer )
1520 {
1621 _renderer = renderer ;
1722 _containerTestRootComponent = new ContainerComponent ( _renderer ) ;
1823 }
1924
20- public TComponent Instance => _testComponentInstance ;
25+ public TComponent ? Instance => _testComponentInstance ;
2126
2227 public string GetMarkup ( )
2328 {
@@ -26,31 +31,30 @@ public string GetMarkup()
2631
2732 internal void SetParametersAndRender ( ParameterView parameters )
2833 {
29- _containerTestRootComponent . RenderComponentUnderTest ( typeof ( TComponent ) , parameters ) ;
30- var foundTestComponent = _containerTestRootComponent . FindComponentUnderTest < TComponent > ( ) ;
31- _testComponentId = foundTestComponent . Id ;
32- _testComponentInstance = foundTestComponent . Component ;
34+ //_containerTestRootComponent.RenderComponentUnderTest(typeof(TComponent), parameters);
35+ //(_testComponentId, _testComponentInstance) = _containerTestRootComponent.FindComponentUnderTest<TComponent>();
3336 }
3437
35- public HtmlNode Find ( string selector )
38+ public IElement Find ( string selector )
3639 {
3740 return FindAll ( selector ) . FirstOrDefault ( ) ;
3841 }
3942
40- public ICollection < HtmlNode > FindAll ( string selector )
43+ public IHtmlCollection < IElement > FindAll ( string selector )
4144 {
42- // Rather than using HTML strings, it would be faster and more powerful
43- // to implement Fizzler's APIs for walking directly over the rendered
44- // frames, since Fizzler's core isn't tied to HTML (or HtmlAgilityPack).
45- // The most awkward part of this will be handling Markup frames, since
46- // they are HTML strings so would need to be parsed, or perhaps you can
47- // pass through those calls into Fizzler.Systems.HtmlAgilityPack.
48-
4945 var markup = GetMarkup ( ) ;
50- var html = new TestHtmlDocument ( _renderer ) ;
5146
52- html . LoadHtml ( markup ) ;
53- return html . DocumentNode . QuerySelectorAll ( selector ) . ToList ( ) ;
47+ var document = _browsingContext . OpenAsync ( x => x . Content ( markup ) ) . GetAwaiter ( ) . GetResult ( ) ;
48+ return document . QuerySelectorAll ( selector ) ;
49+
50+ //var parser = context.GetService<IHtmlParser>();
51+ //var rootElement = document.QuerySelector(root) ?? document.CreateElement(root);
52+ //var actualFragment = parser.ParseFragment(actual, rootElement);
53+
54+ //var html = new TestHtmlDocument(_renderer);
55+
56+ //html.LoadHtml(markup);
57+ //return html.DocumentNode.QuerySelectorAll(selector).ToList();
5458 }
5559 }
5660}
0 commit comments