Changeset 57835
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/wp-includes/interactivity-api/class-wp-interactivity-api.php
r57832 r57835 592 592 $result = $this->evaluate( $attribute_value, end( $namespace_stack ), end( $context_stack ) ); 593 593 594 if ( null !== $result && ( false !== $result || '-' === $bound_attribute[4] ) ) { 594 if ( 595 null !== $result && 596 ( 597 false !== $result || 598 ( strlen( $bound_attribute ) > 5 && '-' === $bound_attribute[4] ) 599 ) 600 ) { 595 601 /* 596 602 * If the result of the evaluation is a boolean and the attribute is … … 600 606 * https://github.com/preactjs/preact/blob/ea49f7a0f9d1ff2c98c0bdd66aa0cbc583055246/src/diff/props.js#L131C24-L136 601 607 */ 602 if ( is_bool( $result ) && '-' === $bound_attribute[4] ) { 608 if ( 609 is_bool( $result ) && 610 ( strlen( $bound_attribute ) > 5 && '-' === $bound_attribute[4] ) 611 ) { 603 612 $result = $result ? 'true' : 'false'; 604 613 } -
trunk/tests/phpunit/tests/interactivity-api/wpInteractivityAPI-wp-bind.php
r57563 r57835 34 34 'trueString' => 'true', 35 35 'falseString' => 'false', 36 'trueValue' => true, 37 'falseValue' => false, 36 38 ) 37 39 ); … … 61 63 $html = '<div data-wp-bind--id="myPlugin::state.id">Text</div>'; 62 64 list($p) = $this->process_directives( $html ); 63 $this->assert Equals( 'some-id', $p->get_attribute( 'id' ) );65 $this->assertSame( 'some-id', $p->get_attribute( 'id' ) ); 64 66 } 65 67 … … 74 76 $html = '<div id="other-id" data-wp-bind--id="myPlugin::state.id">Text</div>'; 75 77 list($p) = $this->process_directives( $html ); 76 $this->assert Equals( 'some-id', $p->get_attribute( 'id' ) );78 $this->assertSame( 'some-id', $p->get_attribute( 'id' ) ); 77 79 } 78 80 … … 87 89 $html = '<img data-wp-bind--width="myPlugin::state.width">'; 88 90 list($p) = $this->process_directives( $html ); 89 $this->assert Equals( '100', $p->get_attribute( 'width' ) );91 $this->assertSame( '100', $p->get_attribute( 'width' ) ); 90 92 } 91 93 … … 100 102 $html = '<div data-wp-bind--id="myPlugin::state.trueString">Text</div>'; 101 103 list($p, $new_html) = $this->process_directives( $html ); 102 $this->assert Equals( 'true', $p->get_attribute( 'id' ) );103 $this->assert Equals( '<div id="true" data-wp-bind--id="myPlugin::state.trueString">Text</div>', $new_html );104 $this->assertSame( 'true', $p->get_attribute( 'id' ) ); 105 $this->assertSame( '<div id="true" data-wp-bind--id="myPlugin::state.trueString">Text</div>', $new_html ); 104 106 } 105 107 … … 114 116 $html = '<div data-wp-bind--id="myPlugin::state.falseString">Text</div>'; 115 117 list($p, $new_html) = $this->process_directives( $html ); 116 $this->assert Equals( 'false', $p->get_attribute( 'id' ) );117 $this->assert Equals( '<div id="false" data-wp-bind--id="myPlugin::state.falseString">Text</div>', $new_html );118 $this->assertSame( 'false', $p->get_attribute( 'id' ) ); 119 $this->assertSame( '<div id="false" data-wp-bind--id="myPlugin::state.falseString">Text</div>', $new_html ); 118 120 } 119 121 … … 128 130 $html = '<div data-wp-bind="myPlugin::state.id">Text</div>'; 129 131 $new_html = $this->interactivity->process_directives( $html ); 130 $this->assert Equals( $html, $new_html );132 $this->assertSame( $html, $new_html ); 131 133 } 132 134 … … 142 144 $html = '<div data-wp-bind--id="myPlugin::state.nonExistengKey">Text</div>'; 143 145 $new_html = $this->interactivity->process_directives( $html ); 144 $this->assert Equals( $html, $new_html );146 $this->assertSame( $html, $new_html ); 145 147 } 146 148 … … 155 157 $html = '<div data-wp-bind--id="">Text</div>'; 156 158 $new_html = $this->interactivity->process_directives( $html ); 157 $this->assert Equals( $html, $new_html );159 $this->assertSame( $html, $new_html ); 158 160 } 159 161 … … 168 170 $html = '<div data-wp-bind--id>Text</div>'; 169 171 $new_html = $this->interactivity->process_directives( $html ); 170 $this->assert Equals( $html, $new_html );172 $this->assertSame( $html, $new_html ); 171 173 } 172 174 … … 182 184 $html = '<div data-wp-bind--id="myPlugin::state.id" data-wp-bind--id="myPlugin::state.id">Text</div>'; 183 185 list($p) = $this->process_directives( $html ); 184 $this->assert Equals( 'some-id', $p->get_attribute( 'id' ) );186 $this->assertSame( 'some-id', $p->get_attribute( 'id' ) ); 185 187 } 186 188 … … 196 198 $html = '<img data-wp-bind--id="myPlugin::state.id" data-wp-bind--width="myPlugin::state.width">'; 197 199 list($p) = $this->process_directives( $html ); 198 $this->assert Equals( 'some-id', $p->get_attribute( 'id' ) );199 $this->assert Equals( '100', $p->get_attribute( 'width' ) );200 $this->assertSame( 'some-id', $p->get_attribute( 'id' ) ); 201 $this->assertSame( '100', $p->get_attribute( 'width' ) ); 200 202 } 201 203 … … 211 213 list($p, $new_html) = $this->process_directives( $html ); 212 214 $this->assertTrue( $p->get_attribute( 'hidden' ) ); 213 $this->assert Equals( '<div hidden data-wp-bind--hidden="myPlugin::!state.isOpen">Text</div>', $new_html );215 $this->assertSame( '<div hidden data-wp-bind--hidden="myPlugin::!state.isOpen">Text</div>', $new_html ); 214 216 } 215 217 … … 226 228 list($p, $new_html) = $this->process_directives( $html ); 227 229 $this->assertTrue( $p->get_attribute( 'hidden' ) ); 228 $this->assert Equals( '<div hidden data-wp-bind--hidden="myPlugin::!state.isOpen">Text</div>', $new_html );230 $this->assertSame( '<div hidden data-wp-bind--hidden="myPlugin::!state.isOpen">Text</div>', $new_html ); 229 231 } 230 232 … … 241 243 list($p, $new_html) = $this->process_directives( $html ); 242 244 $this->assertNull( $p->get_attribute( 'hidden' ) ); 243 $this->assert Equals( $html, $new_html );245 $this->assertSame( $html, $new_html ); 244 246 245 247 $html = '<div data-wp-bind--hidden="myPlugin::state.null">Text</div>'; 246 248 list($p, $new_html) = $this->process_directives( $html ); 247 249 $this->assertNull( $p->get_attribute( 'hidden' ) ); 248 $this->assert Equals( $html, $new_html );250 $this->assertSame( $html, $new_html ); 249 251 } 250 252 … … 278 280 $html = '<div data-wp-bind--aria-hidden="myPlugin::!state.isOpen">Text</div>'; 279 281 list($p, $new_html) = $this->process_directives( $html ); 280 $this->assert Equals( 'true', $p->get_attribute( 'aria-hidden' ) );281 $this->assert Equals( '<div aria-hidden="true" data-wp-bind--aria-hidden="myPlugin::!state.isOpen">Text</div>', $new_html );282 $this->assertSame( 'true', $p->get_attribute( 'aria-hidden' ) ); 283 $this->assertSame( '<div aria-hidden="true" data-wp-bind--aria-hidden="myPlugin::!state.isOpen">Text</div>', $new_html ); 282 284 283 285 $html = '<div data-wp-bind--data-is-closed="myPlugin::!state.isOpen">Text</div>'; 284 286 list($p, $new_html) = $this->process_directives( $html ); 285 $this->assert Equals( 'true', $p->get_attribute( 'data-is-closed' ) );286 $this->assert Equals( '<div data-is-closed="true" data-wp-bind--data-is-closed="myPlugin::!state.isOpen">Text</div>', $new_html );287 $this->assertSame( 'true', $p->get_attribute( 'data-is-closed' ) ); 288 $this->assertSame( '<div data-is-closed="true" data-wp-bind--data-is-closed="myPlugin::!state.isOpen">Text</div>', $new_html ); 287 289 } 288 290 … … 298 300 $html = '<div aria-hidden="false" data-wp-bind--aria-hidden="myPlugin::!state.isOpen">Text</div>'; 299 301 list($p, $new_html) = $this->process_directives( $html ); 300 $this->assert Equals( 'true', $p->get_attribute( 'aria-hidden' ) );301 $this->assert Equals( '<div aria-hidden="true" data-wp-bind--aria-hidden="myPlugin::!state.isOpen">Text</div>', $new_html );302 $this->assertSame( 'true', $p->get_attribute( 'aria-hidden' ) ); 303 $this->assertSame( '<div aria-hidden="true" data-wp-bind--aria-hidden="myPlugin::!state.isOpen">Text</div>', $new_html ); 302 304 303 305 $html = '<div data-is-closed="false" data-wp-bind--data-is-closed="myPlugin::!state.isOpen">Text</div>'; … … 305 307 $p = new WP_HTML_Tag_Processor( $new_html ); 306 308 $p->next_tag(); 307 $this->assert Equals( 'true', $p->get_attribute( 'data-is-closed' ) );308 $this->assert Equals( '<div data-is-closed="true" data-wp-bind--data-is-closed="myPlugin::!state.isOpen">Text</div>', $new_html );309 $this->assertSame( 'true', $p->get_attribute( 'data-is-closed' ) ); 310 $this->assertSame( '<div data-is-closed="true" data-wp-bind--data-is-closed="myPlugin::!state.isOpen">Text</div>', $new_html ); 309 311 } 310 312 … … 320 322 $html = '<div data-wp-bind--aria-hidden="myPlugin::state.isOpen">Text</div>'; 321 323 list($p, $new_html) = $this->process_directives( $html ); 322 $this->assert Equals( 'false', $p->get_attribute( 'aria-hidden' ) );323 $this->assert Equals( '<div aria-hidden="false" data-wp-bind--aria-hidden="myPlugin::state.isOpen">Text</div>', $new_html );324 $this->assertSame( 'false', $p->get_attribute( 'aria-hidden' ) ); 325 $this->assertSame( '<div aria-hidden="false" data-wp-bind--aria-hidden="myPlugin::state.isOpen">Text</div>', $new_html ); 324 326 325 327 $html = '<div data-wp-bind--data-is-closed="myPlugin::state.isOpen">Text</div>'; 326 328 list($p, $new_html) = $this->process_directives( $html ); 327 $this->assert Equals( 'false', $p->get_attribute( 'data-is-closed' ) );328 $this->assert Equals( '<div data-is-closed="false" data-wp-bind--data-is-closed="myPlugin::state.isOpen">Text</div>', $new_html );329 $this->assertSame( 'false', $p->get_attribute( 'data-is-closed' ) ); 330 $this->assertSame( '<div data-is-closed="false" data-wp-bind--data-is-closed="myPlugin::state.isOpen">Text</div>', $new_html ); 329 331 } 330 332 … … 340 342 $html = '<div aria-hidden="true" data-wp-bind--aria-hidden="myPlugin::state.isOpen">Text</div>'; 341 343 list($p, $new_html) = $this->process_directives( $html ); 342 $this->assert Equals( 'false', $p->get_attribute( 'aria-hidden' ) );343 $this->assert Equals( '<div aria-hidden="false" data-wp-bind--aria-hidden="myPlugin::state.isOpen">Text</div>', $new_html );344 $this->assertSame( 'false', $p->get_attribute( 'aria-hidden' ) ); 345 $this->assertSame( '<div aria-hidden="false" data-wp-bind--aria-hidden="myPlugin::state.isOpen">Text</div>', $new_html ); 344 346 345 347 $html = '<div data-is-closed="true" data-wp-bind--data-is-closed="myPlugin::state.isOpen">Text</div>'; 346 348 list($p, $new_html) = $this->process_directives( $html ); 347 $this->assert Equals( 'false', $p->get_attribute( 'data-is-closed' ) );348 $this->assert Equals( '<div data-is-closed="false" data-wp-bind--data-is-closed="myPlugin::state.isOpen">Text</div>', $new_html );349 $this->assertSame( 'false', $p->get_attribute( 'data-is-closed' ) ); 350 $this->assertSame( '<div data-is-closed="false" data-wp-bind--data-is-closed="myPlugin::state.isOpen">Text</div>', $new_html ); 349 351 } 350 352 … … 376 378 $html = '<div data-wp-bind--id="myPlugin::state.id"><img data-wp-bind--width="myPlugin::state.width"></div>'; 377 379 list($p) = $this->process_directives( $html ); 378 $this->assert Equals( 'some-id', $p->get_attribute( 'id' ) );380 $this->assertSame( 'some-id', $p->get_attribute( 'id' ) ); 379 381 $p->next_tag(); 380 $this->assertEquals( '100', $p->get_attribute( 'width' ) ); 382 $this->assertSame( '100', $p->get_attribute( 'width' ) ); 383 } 384 385 /** 386 * Tests handling bindings to boolean values. 387 * 388 * @ticket 60758 389 * 390 * @covers ::process_directives 391 */ 392 public function test_wp_bind_handles_true_value() { 393 $html = '<div data-wp-bind--id="myPlugin::state.trueValue"></div>'; 394 list($p) = $this->process_directives( $html ); 395 $this->assertSame( true, $p->get_attribute( 'id' ) ); 381 396 } 382 397 }
Note: See TracChangeset
for help on using the changeset viewer.