blade.test.php 4.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124
  1. <?php
  2. use Laravel\Blade;
  3. class BladeTest extends PHPUnit_Framework_TestCase {
  4. /**
  5. * Test the compilation of echo statements.
  6. *
  7. * @group laravel
  8. */
  9. public function testEchosAreConvertedProperly()
  10. {
  11. $blade1 = '{{$a}}';
  12. $blade2 = '{{e($a)}}';
  13. $blade3 = '{{{$a}}}';
  14. $blade4 = '{{{e($a)}}}';
  15. $this->assertEquals('<?php echo $a; ?>', Blade::compile_string($blade1));
  16. $this->assertEquals('<?php echo e($a); ?>', Blade::compile_string($blade2));
  17. $this->assertEquals('<?php echo HTML::entities($a); ?>', Blade::compile_string($blade3));
  18. $this->assertEquals('<?php echo HTML::entities(e($a)); ?>', Blade::compile_string($blade4));
  19. }
  20. /**
  21. * Test the compilation of comments statements.
  22. *
  23. * @group laravel
  24. */
  25. public function testCommentsAreConvertedProperly()
  26. {
  27. $blade1 = "{{-- This is a comment --}}";
  28. $blade2 = "{{--\nThis is a\nmulti-line\ncomment.\n--}}";
  29. $this->assertEquals("<?php /* This is a comment */ ?>\n", Blade::compile_string($blade1));
  30. $this->assertEquals("<?php /* \nThis is a\nmulti-line\ncomment.\n */ ?>\n", Blade::compile_string($blade2));
  31. }
  32. /**
  33. * Test the compilation of control structures.
  34. *
  35. * @group laravel
  36. */
  37. public function testControlStructuresAreCreatedCorrectly()
  38. {
  39. $blade1 = "@if (true)\nfoo\n@endif";
  40. $blade2 = "@if (count(".'$something'.") > 0)\nfoo\n@endif";
  41. $blade3 = "@if (true)\nfoo\n@elseif (false)\nbar\n@else\nfoobar\n@endif";
  42. $blade4 = "@if (true)\nfoo\n@elseif (false)\nbar\n@endif";
  43. $blade5 = "@if (true)\nfoo\n@else\nbar\n@endif";
  44. $blade6 = "@unless (count(".'$something'.") > 0)\nfoobar\n@endunless";
  45. $blade7 = "@for (Foo::all() as ".'$foo'.")\nfoo\n@endfor";
  46. $blade8 = "@foreach (Foo::all() as ".'$foo'.")\nfoo\n@endforeach";
  47. $blade9 = "@forelse (Foo::all() as ".'$foo'.")\nfoo\n@empty\nbar\n@endforelse";
  48. $blade10 = "@while (true)\nfoo\n@endwhile";
  49. $blade11 = "@while (Foo::bar())\nfoo\n@endwhile";
  50. $this->assertEquals("<?php if (true): ?>\nfoo\n<?php endif; ?>", Blade::compile_string($blade1));
  51. $this->assertEquals("<?php if (count(".'$something'.") > 0): ?>\nfoo\n<?php endif; ?>", Blade::compile_string($blade2));
  52. $this->assertEquals("<?php if (true): ?>\nfoo\n<?php elseif (false): ?>\nbar\n<?php else: ?>\nfoobar\n<?php endif; ?>", Blade::compile_string($blade3));
  53. $this->assertEquals("<?php if (true): ?>\nfoo\n<?php elseif (false): ?>\nbar\n<?php endif; ?>", Blade::compile_string($blade4));
  54. $this->assertEquals("<?php if (true): ?>\nfoo\n<?php else: ?>\nbar\n<?php endif; ?>", Blade::compile_string($blade5));
  55. $this->assertEquals("<?php if ( ! ( (count(".'$something'.") > 0))): ?>\nfoobar\n<?php endif; ?>", Blade::compile_string($blade6));
  56. $this->assertEquals("<?php for (Foo::all() as ".'$foo'."): ?>\nfoo\n<?php endfor; ?>", Blade::compile_string($blade7));
  57. $this->assertEquals("<?php foreach (Foo::all() as ".'$foo'."): ?>\nfoo\n<?php endforeach; ?>", Blade::compile_string($blade8));
  58. $this->assertEquals("<?php if (count(Foo::all()) > 0): ?><?php foreach (Foo::all() as ".'$foo'."): ?>\nfoo\n<?php endforeach; ?><?php else: ?>\nbar\n<?php endif; ?>", Blade::compile_string($blade9));
  59. $this->assertEquals("<?php while (true): ?>\nfoo\n<?php endwhile; ?>", Blade::compile_string($blade10));
  60. $this->assertEquals("<?php while (Foo::bar()): ?>\nfoo\n<?php endwhile; ?>", Blade::compile_string($blade11));
  61. }
  62. /**
  63. * Test the compilation of yield statements.
  64. *
  65. * @group laravel
  66. */
  67. public function testYieldsAreCompiledCorrectly()
  68. {
  69. $blade = "@yield('something')";
  70. $this->assertEquals("<?php echo \\Laravel\\Section::yield('something'); ?>", Blade::compile_string($blade));
  71. }
  72. /**
  73. * Test the compilation of section statements.
  74. *
  75. * @group laravel
  76. */
  77. public function testSectionsAreCompiledCorrectly()
  78. {
  79. $blade = "@section('something')\nfoo\n@endsection";
  80. $this->assertEquals("<?php \\Laravel\\Section::start('something'); ?>\nfoo\n<?php \\Laravel\\Section::stop(); ?>", Blade::compile_string($blade));
  81. }
  82. /**
  83. * Test the compilation of include statements.
  84. *
  85. * @group laravel
  86. */
  87. public function testIncludesAreCompiledCorrectly()
  88. {
  89. $blade1 = "@include('user.profile')";
  90. $blade2 = "@include(Config::get('application.default_view', 'user.profile'))";
  91. $this->assertEquals("<?php echo view('user.profile')->with(get_defined_vars())->render(); ?>", Blade::compile_string($blade1));
  92. $this->assertEquals("<?php echo view(Config::get('application.default_view', 'user.profile'))->with(get_defined_vars())->render(); ?>", Blade::compile_string($blade2));
  93. }
  94. /**
  95. * Test the compilation of render statements.
  96. *
  97. * @group laravel
  98. */
  99. public function testRendersAreCompiledCorrectly()
  100. {
  101. $blade1 = "@render('user.profile')";
  102. $blade2 = "@render(Config::get('application.default_view', 'user.profile'))";
  103. $this->assertEquals("<?php echo render('user.profile'); ?>", Blade::compile_string($blade1));
  104. $this->assertEquals("<?php echo render(Config::get('application.default_view', 'user.profile')); ?>", Blade::compile_string($blade2));
  105. }
  106. }