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); + } }