BladeForelseStatementsTest.php 2.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980
  1. <?php
  2. namespace Illuminate\Tests\View\Blade;
  3. class BladeForelseStatementsTest extends AbstractBladeTestCase
  4. {
  5. public function testForelseStatementsAreCompiled()
  6. {
  7. $string = '@forelse ($this->getUsers() as $user)
  8. breeze
  9. @empty
  10. empty
  11. @endforelse';
  12. $expected = '<?php $__empty_1 = true; $__currentLoopData = $this->getUsers(); $__env->addLoop($__currentLoopData); foreach($__currentLoopData as $user): $__env->incrementLoopIndices(); $loop = $__env->getLastLoop(); $__empty_1 = false; ?>
  13. breeze
  14. <?php endforeach; $__env->popLoop(); $loop = $__env->getLastLoop(); if ($__empty_1): ?>
  15. empty
  16. <?php endif; ?>';
  17. $this->assertEquals($expected, $this->compiler->compileString($string));
  18. }
  19. public function testForelseStatementsAreCompiledWithUppercaseSyntax()
  20. {
  21. $string = '@forelse ($this->getUsers() AS $user)
  22. breeze
  23. @empty
  24. empty
  25. @endforelse';
  26. $expected = '<?php $__empty_1 = true; $__currentLoopData = $this->getUsers(); $__env->addLoop($__currentLoopData); foreach($__currentLoopData as $user): $__env->incrementLoopIndices(); $loop = $__env->getLastLoop(); $__empty_1 = false; ?>
  27. breeze
  28. <?php endforeach; $__env->popLoop(); $loop = $__env->getLastLoop(); if ($__empty_1): ?>
  29. empty
  30. <?php endif; ?>';
  31. $this->assertEquals($expected, $this->compiler->compileString($string));
  32. }
  33. public function testForelseStatementsAreCompiledWithMultipleLine()
  34. {
  35. $string = '@forelse ([
  36. foo,
  37. bar,
  38. ] as $label)
  39. breeze
  40. @empty
  41. empty
  42. @endforelse';
  43. $expected = '<?php $__empty_1 = true; $__currentLoopData = [
  44. foo,
  45. bar,
  46. ]; $__env->addLoop($__currentLoopData); foreach($__currentLoopData as $label): $__env->incrementLoopIndices(); $loop = $__env->getLastLoop(); $__empty_1 = false; ?>
  47. breeze
  48. <?php endforeach; $__env->popLoop(); $loop = $__env->getLastLoop(); if ($__empty_1): ?>
  49. empty
  50. <?php endif; ?>';
  51. $this->assertEquals($expected, $this->compiler->compileString($string));
  52. }
  53. public function testNestedForelseStatementsAreCompiled()
  54. {
  55. $string = '@forelse ($this->getUsers() as $user)
  56. @forelse ($user->tags as $tag)
  57. breeze
  58. @empty
  59. tag empty
  60. @endforelse
  61. @empty
  62. empty
  63. @endforelse';
  64. $expected = '<?php $__empty_1 = true; $__currentLoopData = $this->getUsers(); $__env->addLoop($__currentLoopData); foreach($__currentLoopData as $user): $__env->incrementLoopIndices(); $loop = $__env->getLastLoop(); $__empty_1 = false; ?>
  65. <?php $__empty_2 = true; $__currentLoopData = $user->tags; $__env->addLoop($__currentLoopData); foreach($__currentLoopData as $tag): $__env->incrementLoopIndices(); $loop = $__env->getLastLoop(); $__empty_2 = false; ?>
  66. breeze
  67. <?php endforeach; $__env->popLoop(); $loop = $__env->getLastLoop(); if ($__empty_2): ?>
  68. tag empty
  69. <?php endif; ?>
  70. <?php endforeach; $__env->popLoop(); $loop = $__env->getLastLoop(); if ($__empty_1): ?>
  71. empty
  72. <?php endif; ?>';
  73. $this->assertEquals($expected, $this->compiler->compileString($string));
  74. }
  75. }