Skip to content

Commit 915becd

Browse files
committed
Improve Blade unit-test code coverage
Signed-off-by: crynobone <crynobone@gmail.com>
1 parent 436672c commit 915becd

File tree

2 files changed

+50
-1
lines changed

2 files changed

+50
-1
lines changed

laravel/blade.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -303,7 +303,7 @@ protected static function compile_unless($value)
303303
{
304304
$pattern = '/(\s*)@unless(\s*\(.*\))/';
305305

306-
return preg_replace($pattern, '$1<?php if( ! ($2)): ?>', $value);
306+
return preg_replace($pattern, '$1<?php if ( ! ($2)): ?>', $value);
307307
}
308308

309309
/**

laravel/tests/cases/blade.test.php

Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,20 @@ public function testEchosAreConvertedProperly()
1818
$this->assertEquals('<?php echo e($a); ?>', Blade::compile_string($blade2));
1919
}
2020

21+
/**
22+
* Test the compilation of comments statements.
23+
*
24+
* @group laravel
25+
*/
26+
public function testCommentsAreConvertedProperly()
27+
{
28+
$blade1 = "{{-- This is a comment --}}";
29+
$blade2 = "{{--\nThis is a\nmulti-line\ncomment.\n--}}";
30+
31+
$this->assertEquals("<?php /* This is a comment */ ?>\n", Blade::compile_string($blade1));
32+
$this->assertEquals("<?php /* \nThis is a\nmulti-line\ncomment.\n */ ?>\n", Blade::compile_string($blade2));
33+
}
34+
2135
/**
2236
* Test the compilation of control structures.
2337
*
@@ -29,11 +43,22 @@ public function testControlStructuresAreCreatedCorrectly()
2943
$blade2 = "@if (count(".'$something'.") > 0)\nfoo\n@endif";
3044
$blade3 = "@if (true)\nfoo\n@elseif (false)\nbar\n@endif";
3145
$blade4 = "@if (true)\nfoo\n@else\nbar\n@endif";
46+
$blade5 = "@unless (count(".'$something'.") > 0)\nfoobar\n@endunless";
47+
$blade6 = "@for (Foo::all() as ".'$foo'.")\nfoo\n@endfor";
48+
$blade7 = "@foreach (Foo::all() as ".'$foo'.")\nfoo\n@endforeach";
49+
$blade8 = "@forelse (Foo::all() as ".'$foo'.")\nfoo\n@empty\nbar\n@endforelse";
50+
$blade9 = "@while (true)\nfoo\n@endwhile";
3251

3352
$this->assertEquals("<?php if (true): ?>\nfoo\n<?php endif; ?>", Blade::compile_string($blade1));
3453
$this->assertEquals("<?php if (count(".'$something'.") > 0): ?>\nfoo\n<?php endif; ?>", Blade::compile_string($blade2));
3554
$this->assertEquals("<?php if (true): ?>\nfoo\n<?php elseif (false): ?>\nbar\n<?php endif; ?>", Blade::compile_string($blade3));
3655
$this->assertEquals("<?php if (true): ?>\nfoo\n<?php else: ?>\nbar\n<?php endif; ?>", Blade::compile_string($blade4));
56+
$this->assertEquals("<?php if ( ! ( (count(".'$something'.") > 0))): ?>\nfoobar\n<?php endif; ?>", Blade::compile_string($blade5));
57+
$this->assertEquals("<?php for (Foo::all() as ".'$foo'."): ?>\nfoo\n<?php endfor; ?>", Blade::compile_string($blade6));
58+
$this->assertEquals("<?php foreach (Foo::all() as ".'$foo'."): ?>\nfoo\n<?php endforeach; ?>", Blade::compile_string($blade7));
59+
$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($blade8));
60+
$this->assertEquals("<?php while (true): ?>\nfoo\n<?php endwhile; ?>", Blade::compile_string($blade9));
61+
3762
}
3863

3964
/**
@@ -60,4 +85,28 @@ public function testSectionsAreCompiledCorrectly()
6085
$this->assertEquals("<?php \\Laravel\\Section::start('something'); ?>\nfoo\n<?php \\Laravel\\Section::stop(); ?>", Blade::compile_string($blade));
6186
}
6287

88+
/**
89+
* Test the compilation of include statements.
90+
*
91+
* @group laravel
92+
*/
93+
public function testIncludesAreCompiledCorrectly()
94+
{
95+
$blade = "@include('user.profile')";
96+
97+
$this->assertEquals("<?php echo view('user.profile')->with(get_defined_vars())->render(); ?>", Blade::compile_string($blade));
98+
}
99+
100+
/**
101+
* Test the compilation of render statements.
102+
*
103+
* @group laravel
104+
*/
105+
public function testRendersAreCompiledCorrectly()
106+
{
107+
$blade = "@render('user.profile')";
108+
109+
$this->assertEquals("<?php echo render('user.profile'); ?>", Blade::compile_string($blade));
110+
}
111+
63112
}

0 commit comments

Comments
 (0)