blade.test.php 4.7 KB

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