55namespace Flow \ETL \Tests \Integration \Function ;
66
77use function Flow \ETL \DSL \{df , from_rows , html_entry , ref , row , rows };
8- use Dom \{Element , HTMLDocument };
8+ use Dom \{HTMLDocument };
99use PHPUnit \Framework \Attributes \RequiresPhp ;
1010use PHPUnit \Framework \TestCase ;
1111
@@ -14,37 +14,45 @@ final class HTMLQuerySelectorAllTest extends TestCase
1414{
1515 public function test_invalid_query_all_on_html_document () : void
1616 {
17- /* @phpstan-ignore-next-line */
1817 $ html = HTMLDocument::createFromString ('<!DOCTYPE html><html lang="en"><head></head><body><div><span>foobar</span></div></body></html> ' );
1918
20- $ rows = df ()
21- ->read (from_rows (rows (row (html_entry ('html_raw ' , $ html )))))
22- ->withEntry ('html ' , ref ('html_raw ' )->htmlQuerySelectorAll ('body div p ' ))
23- ->drop ('html_raw ' )
24- ->fetch ();
25-
26- $ results = $ rows ->toArray ()[0 ]['html ' ] ?? [];
27-
28- /* @phpstan-ignore-next-line */
29- self ::assertCount (0 , $ results );
19+ self ::assertEquals (
20+ [
21+ [
22+ 'html ' => null ,
23+ ],
24+ ],
25+ df ()
26+ ->read (from_rows (rows (row (html_entry ('html_raw ' , $ html )))))
27+ ->withEntry ('html ' , ref ('html_raw ' )->htmlQuerySelectorAll ('body div p ' ))
28+ ->drop ('html_raw ' )
29+ ->fetch ()
30+ ->toArray (),
31+ );
3032 }
3133
3234 public function test_valid_query_all_on_html_document () : void
3335 {
34- /* @phpstan-ignore-next-line */
35- $ html = HTMLDocument::createFromString ('<!DOCTYPE html><html lang="en"><head></head><body><div><span>foobar</span></div></body></html> ' );
36-
37- $ rows = df ()
38- ->read (from_rows (rows (row (html_entry ('html_raw ' , $ html )))))
39- ->withEntry ('html ' , ref ('html_raw ' )->htmlQuerySelectorAll ('body div span ' ))
40- ->drop ('html_raw ' )
41- ->fetch ();
42-
43- $ results = $ rows ->toArray ()[0 ]['html ' ] ?? [];
44-
45- /* @phpstan-ignore-next-line */
46- self ::assertCount (1 , $ results );
47- /* @phpstan-ignore-next-line */
48- self ::assertContainsOnlyInstancesOf (Element::class, $ results );
36+ $ html = HTMLDocument::createFromString ('<!DOCTYPE html><html lang="en"><head></head><body><div><span>foo</span><span>bar</span></div></body></html> ' );
37+
38+ $ elementFoo = HTMLDocument::createFromString ('<span>foo</span> ' , \LIBXML_HTML_NOIMPLIED | \LIBXML_NOERROR );
39+ $ elementBar = HTMLDocument::createFromString ('<span>bar</span> ' , \LIBXML_HTML_NOIMPLIED | \LIBXML_NOERROR );
40+
41+ self ::assertEquals (
42+ [
43+ [
44+ 'html ' => [
45+ $ elementFoo ->documentElement ,
46+ $ elementBar ->documentElement ,
47+ ],
48+ ],
49+ ],
50+ df ()
51+ ->read (from_rows (rows (row (html_entry ('html_raw ' , $ html )))))
52+ ->withEntry ('html ' , ref ('html_raw ' )->htmlQuerySelectorAll ('body div span ' ))
53+ ->drop ('html_raw ' )
54+ ->fetch ()
55+ ->toArray ()
56+ );
4957 }
5058}
0 commit comments