Skip to content

Commit

Permalink
Add testComplexWebpPictureTag (#44)
Browse files Browse the repository at this point in the history
  • Loading branch information
Manours authored Jun 29, 2022
1 parent fad2eb0 commit 327abe6
Show file tree
Hide file tree
Showing 3 changed files with 65 additions and 3 deletions.
2 changes: 1 addition & 1 deletion .php_cs.dist
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@ return PhpCsFixer\Config::create()
],
'linebreak_after_opening_tag' => true,
'declare_strict_types' => true,
'mb_str_functions' => true,
'mb_str_functions' => false,
'no_php4_constructor' => true,
'no_superfluous_phpdoc_tags' => false,
'no_unreachable_default_argument_value' => true,
Expand Down
8 changes: 6 additions & 2 deletions src/ImageExtension.php
Original file line number Diff line number Diff line change
Expand Up @@ -244,12 +244,16 @@ private function createImage(
foreach ($additionalTypes as $extension => $type) {
$srcset = null;

if (isset($attributes['src'])) {
if (isset($attributes['src']) && (!isset($attributes['srcset']) || false === strpos($attributes['srcset'], $attributes['src'] . ' '))) {
$srcset = $this->addExtension($attributes['src'], $extension);
}

if (isset($attributes['srcset'])) {
$srcset .= ', ' . $this->addExtension($attributes['srcset'], $extension);
if ($srcset) {
$srcset .= ', ';
}

$srcset .= $this->addExtension($attributes['srcset'], $extension);
}

if ($srcset) {
Expand Down
58 changes: 58 additions & 0 deletions tests/Unit/ImageExtensionTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -162,6 +162,64 @@ public function testPictureTag(): void
);
}

public function testComplexWebpPictureTag(): void
{
$imageExtension = new ImageExtension(null, [], ['webp' => 'image/webp']);

$this->assertSame(
'<picture>' .
'<source srcset="/uploads/media/sulu-100x100/01/image.webp?v=1-0 460w, /uploads/media/sulu-170x170/01/image.webp?v=1-0 800w, /uploads/media/sulu-400x400/01/image.webp?v=1-0 1024w"' .
' type="image/webp">' .
'<img alt="Logo"' .
' title="Description"' .
' src="/uploads/media/sulu-400x400/01/image.jpg?v=1-0"' .
' srcset="/uploads/media/sulu-100x100/01/image.jpg?v=1-0 460w, /uploads/media/sulu-170x170/01/image.jpg?v=1-0 800w, /uploads/media/sulu-400x400/01/image.jpg?v=1-0 1024w"' .
' sizes="(max-width: 1024px) 100vw, (max-width: 800px) 100vw, 100vw"' .
' id="image-id"' .
' class="image-class">' .
'</picture>',
$imageExtension->getImage(
$this->image,
[
'src' => 'sulu-400x400',
'srcset' => 'sulu-100x100 460w, sulu-170x170 800w, sulu-400x400 1024w',
'sizes' => '(max-width: 1024px) 100vw, (max-width: 800px) 100vw, 100vw',
'id' => 'image-id',
'class' => 'image-class',
'alt' => 'Logo',
]
)
);
}

public function testComplexWebpPictureTagRetina(): void
{
$imageExtension = new ImageExtension(null, [], ['webp' => 'image/webp']);

$this->assertSame(
'<picture>' .
'<source srcset="/uploads/media/sulu-100x100/01/image.webp?v=1-0 1x, /uploads/media/sulu-400x400/01/image.webp?v=1-0 2x"' .
' type="image/webp">' .
'<img alt="Logo"' .
' title="Description"' .
' src="/uploads/media/sulu-100x100/01/image.jpg?v=1-0"' .
' srcset="/uploads/media/sulu-100x100/01/image.jpg?v=1-0 1x, /uploads/media/sulu-400x400/01/image.jpg?v=1-0 2x"' .
' id="image-id"' .
' class="image-class">' .
'</picture>',
$imageExtension->getImage(
$this->image,
[
'src' => 'sulu-100x100',
'srcset' => 'sulu-100x100 1x, sulu-400x400 2x',
'id' => 'image-id',
'class' => 'image-class',
'alt' => 'Logo',
]
)
);
}

public function testPictureTagMinimalImage(): void
{
$imageExtension = new ImageExtension('/lazy');
Expand Down

0 comments on commit 327abe6

Please sign in to comment.