diff --git a/src/Illuminate/View/Compilers/Concerns/CompilesClasses.php b/src/Illuminate/View/Compilers/Concerns/CompilesClasses.php
index d2507e7116a1..a271b5f805ae 100644
--- a/src/Illuminate/View/Compilers/Concerns/CompilesClasses.php
+++ b/src/Illuminate/View/Compilers/Concerns/CompilesClasses.php
@@ -14,6 +14,6 @@ protected function compileClass($expression)
{
$expression = is_null($expression) ? '([])' : $expression;
- return "class=\"\"";
+ return "";
}
}
diff --git a/src/Illuminate/View/Compilers/Concerns/CompilesStyles.php b/src/Illuminate/View/Compilers/Concerns/CompilesStyles.php
index 6c715061ca4a..c77790c0d77f 100644
--- a/src/Illuminate/View/Compilers/Concerns/CompilesStyles.php
+++ b/src/Illuminate/View/Compilers/Concerns/CompilesStyles.php
@@ -14,6 +14,6 @@ protected function compileStyle($expression)
{
$expression = is_null($expression) ? '([])' : $expression;
- return "style=\"\"";
+ return "";
}
}
diff --git a/tests/View/Blade/BladeClassTest.php b/tests/View/Blade/BladeClassTest.php
index edf1c9cb8840..142b4a186938 100644
--- a/tests/View/Blade/BladeClassTest.php
+++ b/tests/View/Blade/BladeClassTest.php
@@ -7,8 +7,52 @@ class BladeClassTest extends AbstractBladeTestCase
public function testClassesAreConditionallyCompiledFromArray()
{
$string = " true, 'mr-2' => false])>";
- $expected = " true, 'mr-2' => false]); ?>\">";
+ $expected = " true, 'mr-2' => false]); echo \$__classes !== '' ? 'class=\"'.\$__classes.'\"' : ''; ?>>";
$this->assertEquals($expected, $this->compiler->compileString($string));
}
+
+ public function testClassAttributeIsOmittedWhenArrayIsEmpty()
+ {
+ $template = $this->compiler->compileString('');
+
+ ob_start();
+ eval('?>'.$template);
+ $output = ob_get_clean();
+
+ $this->assertSame('', $output);
+ }
+
+ public function testClassAttributeIsOmittedWhenAllConditionsAreFalse()
+ {
+ $template = $this->compiler->compileString(" false, 'bar' => false])>");
+
+ ob_start();
+ eval('?>'.$template);
+ $output = ob_get_clean();
+
+ $this->assertSame('', $output);
+ }
+
+ public function testClassAttributeIsRenderedWhenSomeConditionsAreTrue()
+ {
+ $template = $this->compiler->compileString(" true, 'hidden' => false])>");
+
+ ob_start();
+ eval('?>'.$template);
+ $output = ob_get_clean();
+
+ $this->assertSame('', $output);
+ }
+
+ public function testClassAttributeIsRenderedWithUnconditionalClassWhenAllConditionsAreFalse()
+ {
+ $template = $this->compiler->compileString(" false])>");
+
+ ob_start();
+ eval('?>'.$template);
+ $output = ob_get_clean();
+
+ $this->assertSame('', $output);
+ }
}
diff --git a/tests/View/Blade/BladePhpStatementsTest.php b/tests/View/Blade/BladePhpStatementsTest.php
index e0235ece3016..67236423c222 100644
--- a/tests/View/Blade/BladePhpStatementsTest.php
+++ b/tests/View/Blade/BladePhpStatementsTest.php
@@ -122,12 +122,12 @@ public function testStringWithEscapingDataValue()
public function testUnclosedParenthesisForBladeTags()
{
$string = "";
- $expected = "\"(['(']>";
+ $expected = "(['(']>";
$this->assertEquals($expected, $this->compiler->compileString($string));
$string = "";
- $expected = "\"(['']>";
+ $expected = "(['']>";
$this->assertEquals($expected, $this->compiler->compileString($string));
@@ -145,31 +145,31 @@ public function testUnclosedParenthesisForBladeTags()
public function testNestedTagCalls()
{
$string = " @empty(\$v)])>";
- $expected = '';
+ $expected = ' @empty($v)]); echo $__classes !== \'\' ? \'class="\'.$__classes.\'"\' : \'\'; ?>>';
$this->assertEquals($expected, $this->compiler->compileString($string));
$string = " @empty(\$v)])>";
- $expected = '';
+ $expected = ' @empty($v)]); echo $__classes !== \'\' ? \'class="\'.$__classes.\'"\' : \'\'; ?>>';
$this->assertEquals($expected, $this->compiler->compileString($string));
$string = " @empty(\$v), 't' => @empty(\$v1)])>";
- $expected = '';
+ $expected = ' @empty($v), \'t\' => @empty($v1)]); echo $__classes !== \'\' ? \'class="\'.$__classes.\'"\' : \'\'; ?>>';
$this->assertEquals($expected, $this->compiler->compileString($string));
$string = " @empty(\$v), 't' => @empty(\$v1)])>";
- $expected = '';
+ $expected = ' @empty($v), \'t\' => @empty($v1)]); echo $__classes !== \'\' ? \'class="\'.$__classes.\'"\' : \'\'; ?>>';
$this->assertEquals($expected, $this->compiler->compileString($string));
$string = " @empty(\$v), 't' => @empty(\$v1), 'r' => @empty(\$v2)])>";
- $expected = '';
+ $expected = ' @empty($v), \'t\' => @empty($v1), \'r\' => @empty($v2)]); echo $__classes !== \'\' ? \'class="\'.$__classes.\'"\' : \'\'; ?>>';
$this->assertEquals($expected, $this->compiler->compileString($string));
$string = " @empty(\$v), 't))' => @empty(\$v1), 'r' => @empty(\$v2)])>";
- $expected = '';
+ $expected = ' @empty($v), \'t))\' => @empty($v1), \'r\' => @empty($v2)]); echo $__classes !== \'\' ? \'class="\'.$__classes.\'"\' : \'\'; ?>>';
$this->assertEquals($expected, $this->compiler->compileString($string));
$string = " @empty(\$v), 't' => @empty(\$v1), 'r' => @empty(\$v2), 'l' => 'l'])> @empty(\$v)])>";
- $expected = '';
+ $expected = ' @empty($v), \'t\' => @empty($v1), \'r\' => @empty($v2), \'l\' => \'l\']); echo $__classes !== \'\' ? \'class="\'.$__classes.\'"\' : \'\'; ?>> @empty($v)]); echo $__classes !== \'\' ? \'class="\'.$__classes.\'"\' : \'\'; ?>>';
$this->assertEquals($expected, $this->compiler->compileString($string));
}
diff --git a/tests/View/Blade/BladeStyleTest.php b/tests/View/Blade/BladeStyleTest.php
index 01e8c2eb14df..5288768ec516 100644
--- a/tests/View/Blade/BladeStyleTest.php
+++ b/tests/View/Blade/BladeStyleTest.php
@@ -7,8 +7,52 @@ class BladeStyleTest extends AbstractBladeTestCase
public function testStylesAreConditionallyCompiledFromArray()
{
$string = " true, 'margin-top: 10px' => false])>";
- $expected = " true, 'margin-top: 10px' => false]) ?>\">";
+ $expected = " true, 'margin-top: 10px' => false]); echo \$__styles !== '' ? 'style=\"'.\$__styles.'\"' : ''; ?>>";
$this->assertEquals($expected, $this->compiler->compileString($string));
}
+
+ public function testStyleAttributeIsOmittedWhenArrayIsEmpty()
+ {
+ $template = $this->compiler->compileString('');
+
+ ob_start();
+ eval('?>'.$template);
+ $output = ob_get_clean();
+
+ $this->assertSame('', $output);
+ }
+
+ public function testStyleAttributeIsOmittedWhenAllConditionsAreFalse()
+ {
+ $template = $this->compiler->compileString(" false, 'margin: 0' => false])>");
+
+ ob_start();
+ eval('?>'.$template);
+ $output = ob_get_clean();
+
+ $this->assertSame('', $output);
+ }
+
+ public function testStyleAttributeIsRenderedWhenSomeConditionsAreTrue()
+ {
+ $template = $this->compiler->compileString(" true, 'margin: 0' => false])>");
+
+ ob_start();
+ eval('?>'.$template);
+ $output = ob_get_clean();
+
+ $this->assertSame('', $output);
+ }
+
+ public function testStyleAttributeIsRenderedWithUnconditionalStyleWhenAllConditionsAreFalse()
+ {
+ $template = $this->compiler->compileString(" false])>");
+
+ ob_start();
+ eval('?>'.$template);
+ $output = ob_get_clean();
+
+ $this->assertSame('', $output);
+ }
}