Skip to content

Commit b70a697

Browse files
committed
Add a new HTMLElementEntry & related stuff
1 parent 7913fa5 commit b70a697

3 files changed

Lines changed: 67 additions & 37 deletions

File tree

src/core/etl/tests/Flow/ETL/Tests/Integration/Function/HTMLQuerySelectorAllTest.php

Lines changed: 35 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
namespace Flow\ETL\Tests\Integration\Function;
66

77
use function Flow\ETL\DSL\{df, from_rows, html_entry, ref, row, rows};
8-
use Dom\{Element, HTMLDocument};
8+
use Dom\{HTMLDocument};
99
use PHPUnit\Framework\Attributes\RequiresPhp;
1010
use 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
}

src/core/etl/tests/Flow/ETL/Tests/Integration/Function/HTMLQuerySelectorTest.php

Lines changed: 32 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -14,18 +14,41 @@ final class HTMLQuerySelectorTest extends TestCase
1414
{
1515
public function test_invalid_query_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')->htmlQuerySelector('body div p'))
23-
->drop('html_raw')
24-
->fetch();
19+
self::assertEquals(
20+
[
21+
[
22+
'html_element' => null,
23+
],
24+
],
25+
df()
26+
->read(from_rows(rows(row(html_entry('html_raw', $html)))))
27+
->withEntry('html_element', ref('html_raw')->htmlQuerySelector('body div p'))
28+
->drop('html_raw')
29+
->fetch()
30+
->toArray(),
31+
);
32+
}
33+
34+
public function test_valid_query_on_html_document() : void
35+
{
36+
$html = HTMLDocument::createFromString('<!DOCTYPE html><html lang="en"><head></head><body><div><span>foobar</span></div></body></html>');
2537

26-
$results = $rows->toArray()[0]['html'] ?? [];
38+
$element = HTMLDocument::createFromString('<span>foobar</span>', \LIBXML_HTML_NOIMPLIED | \LIBXML_NOERROR);
2739

28-
/* @phpstan-ignore-next-line */
29-
self::assertCount(0, $results);
40+
self::assertEquals(
41+
[
42+
[
43+
'html_element' => $element->documentElement,
44+
],
45+
],
46+
df()
47+
->read(from_rows(rows(row(html_entry('html_raw', $html)))))
48+
->withEntry('html_element', ref('html_raw')->htmlQuerySelector('body div span'))
49+
->drop('html_raw')
50+
->fetch()
51+
->toArray()
52+
);
3053
}
3154
}

src/core/etl/tests/Flow/ETL/Tests/Unit/Function/HTMLQuerySelectorTest.php

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,6 @@
1010
use PHPUnit\Framework\Attributes\RequiresPhp;
1111
use PHPUnit\Framework\TestCase;
1212

13-
#[RequiresPhp('>= 8.4')]
1413
final class HTMLQuerySelectorTest extends TestCase
1514
{
1615
#[RequiresPhp('< 8.4')]

0 commit comments

Comments
 (0)