Skip to content

Commit 2aadea5

Browse files
committed
Add more tests
1 parent 796e0d7 commit 2aadea5

File tree

1 file changed

+74
-3
lines changed

1 file changed

+74
-3
lines changed

tests/phpunit/tests/html-api/wpHtmlProcessor.php

Lines changed: 74 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -869,24 +869,95 @@ public function test_adjusts_for_mathml_integration_points() {
869869
*
870870
* @dataProvider data_set_inner_html
871871
*/
872-
public function test_set_inner_html( string $html, string $replacement, string $expected ) {
872+
public function test_set_inner_html( string $html, ?string $replacement, string $expected ) {
873873
$processor = WP_HTML_Processor::create_fragment( $html );
874874
while ( $processor->next_tag() ) {
875875
if ( $processor->get_attribute( 'target' ) ) {
876876
break;
877877
}
878878
}
879-
$processor->set_inner_html( $replacement );
879+
880+
$this->assertTrue( $processor->set_inner_html( $replacement ) );
880881
$this->assertSame( $expected, $processor->get_updated_html() );
881882
}
882883

883884
public static function data_set_inner_html() {
884885
return array(
885-
'image in mathml' => array(
886+
array(
886887
'<div target>replace me</div>',
887888
'with me!',
888889
'<div target>with me!</div>',
889890
),
891+
array(
892+
'<div target><div><p><a>replace me</div></div>',
893+
'with me!',
894+
'<div target>with me!</div>',
895+
),
896+
array(
897+
'<table target><td>replace me</table>',
898+
'<td>with me!',
899+
'<table target><td>with me!</td></table>',
900+
),
901+
);
902+
}
903+
904+
/**
905+
* @ticket TBD
906+
*
907+
* @dataProvider data_set_inner_html_not_allowed
908+
*/
909+
public function test_set_inner_html_not_allowed( string $html, string $replacement ) {
910+
$processor = WP_HTML_Processor::create_fragment( $html );
911+
while ( $processor->next_tag() ) {
912+
if ( $processor->get_attribute( 'target' ) ) {
913+
break;
914+
}
915+
}
916+
$this->assertFalse( $processor->set_inner_html( $replacement ) );
917+
$this->assertSame( $html, $processor->get_updated_html() );
918+
}
919+
920+
/**
921+
* Data provider.
922+
*
923+
* @return array[]
924+
*/
925+
public static function data_set_inner_html_not_allowed(): array {
926+
return array(
927+
'not allowed in void tags' => array(
928+
'<br target>',
929+
'anything',
930+
),
931+
'not allowed in self-closing tags' => array(
932+
'<svg><text target />',
933+
'anything',
934+
),
935+
'must have closing tag' => array(
936+
'<body><div target></body>',
937+
'anything',
938+
),
939+
940+
'a in a' => array(
941+
'<a target></a>',
942+
'<a>',
943+
),
944+
'a nested in a' => array(
945+
'<a><i><em><strong target></a>',
946+
'<a>A cannot nest inside a',
947+
),
948+
949+
'text in table' => array(
950+
'<table target><td>hello</table>',
951+
'text triggers forstering - not allowed',
952+
),
953+
'text in thead' => array(
954+
'<table><thead target><td>hello</thead>',
955+
'text triggers forstering - not allowed',
956+
),
957+
'text in tr' => array(
958+
'<table><tr target>hello</tr>',
959+
'text triggers forstering - not allowed',
960+
),
890961
);
891962
}
892963
}

0 commit comments

Comments
 (0)