Html.data.phpt 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071
  1. <?php
  2. /**
  3. * Test: Nette\Utils\Html user data attribute.
  4. */
  5. declare(strict_types=1);
  6. use Nette\Utils\Html;
  7. use Tester\Assert;
  8. require __DIR__ . '/../bootstrap.php';
  9. test('direct', function () {
  10. $el = Html::el('div');
  11. $el->{'data-x'} = 'x';
  12. $el->{'data-list'} = [1, 2, 3];
  13. $el->{'data-arr'} = ['a' => 1];
  14. Assert::same('<div data-x="x" data-list="[1,2,3]" data-arr=\'{"a":1}\'></div>', (string) $el);
  15. });
  16. test('function', function () {
  17. $el = Html::el('div');
  18. $el->data('a', 'one');
  19. $el->data('b', 'two');
  20. $el->data('list', [1, 2, 3]);
  21. $el->data('arr', ['a' => 1]);
  22. Assert::same('one', $el->{'data-a'});
  23. Assert::same('<div data-a="one" data-b="two" data-list="[1,2,3]" data-arr=\'{"a":1}\'></div>', (string) $el);
  24. });
  25. test('special values', function () {
  26. $el = Html::el('div');
  27. $el->data('top', null);
  28. $el->data('t', true);
  29. $el->data('f', false);
  30. $el->data('x', '');
  31. Assert::same('<div data-t="true" data-f="false" data-x=""></div>', (string) $el);
  32. });
  33. test('setter', function () {
  34. $el = Html::el('div');
  35. $el->setAttribute('data-x', 'x');
  36. $el->setAttribute('data-list', [1, 2, 3]);
  37. $el->setAttribute('data-arr', ['a' => 1]);
  38. $el->setAttribute('top', null);
  39. $el->setAttribute('active', false);
  40. Assert::same('<div data-x="x" data-list="[1,2,3]" data-arr=\'{"a":1}\'></div>', (string) $el);
  41. });
  42. test('', function () {
  43. $el = Html::el('div');
  44. $el->data = 'simple';
  45. Assert::same('<div data="simple"></div>', (string) $el);
  46. $el->data('simple2');
  47. Assert::same('<div data="simple2"></div>', (string) $el);
  48. $el->setAttribute('data', 'simple3');
  49. Assert::same('<div data="simple3"></div>', (string) $el);
  50. });