ThumbnailTest.php 3.05 KB
Newer Older
1 2 3 4 5 6
<?php

namespace Modules\Tests;

use Modules\Media\Image\Thumbnail;

7
class ThumbnailTest extends \PHPUnit\Framework\TestCase
8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118
{
    /** @test */
    public function it_creates_thumbnail_class()
    {
        $thumbnail = Thumbnail::make($this->getBlogThumbnailConfig());

        $this->assertInstanceOf('Modules\Media\Image\Thumbnail', $thumbnail);
    }

    /** @test */
    public function it_gets_thumbnail_name()
    {
        $thumbnail = Thumbnail::make($this->getBlogThumbnailConfig());

        $this->assertEquals('blogThumb', $thumbnail->name());
    }

    /** @test */
    public function it_gets_thumbnail_filters()
    {
        $thumbnail = Thumbnail::make($this->getBlogThumbnailConfig());

        $expected = [
            'resize' => [
                'width' => 150,
                'height' => 250,
            ],
            'fit' => [
                'width' => 550,
                'height' => 650,
            ],
        ];
        $this->assertEquals($expected, $thumbnail->filters());
    }

    /** @test */
    public function it_gets_thumbnail_width()
    {
        $thumbnail = Thumbnail::make($this->getBlogThumbnailConfig());

        $this->assertSame(150, $thumbnail->width());
    }

    /** @test */
    public function it_gets_thumbnail_height()
    {
        $thumbnail = Thumbnail::make($this->getBlogThumbnailConfig());

        $this->assertSame(250, $thumbnail->height());
    }

    /** @test */
    public function it_gets_thumbnail_size()
    {
        $thumbnail = Thumbnail::make($this->getBlogThumbnailConfig());

        $this->assertSame('150x250', $thumbnail->size());
    }

    /** @test */
    public function it_gets_multiple_thumbnails()
    {
        $thumbnails = Thumbnail::makeMultiple($this->getMediaThumbnails());

        $this->assertCount(2, $thumbnails);
        $this->assertEquals('smallThumb', $thumbnails[0]->name());
        $this->assertEquals('mediumThumb', $thumbnails[1]->name());
    }

    private function getBlogThumbnailConfig()
    {
        return [
            'blogThumb' => [
                'resize' => [
                    'width' => 150,
                    'height' => 250,
                ],
                'fit' => [
                    'width' => 550,
                    'height' => 650,
                ],
            ],
        ];
    }

    private function getMediaThumbnails()
    {
        return [
            'smallThumb' => [
                'resize' => [
                    'width' => 50,
                    'height' => null,
                    'callback' => function ($constraint) {
                        $constraint->aspectRatio();
                        $constraint->upsize();
                    },
                ],
            ],
            'mediumThumb' => [
                'resize' => [
                    'width' => 180,
                    'height' => null,
                    'callback' => function ($constraint) {
                        $constraint->aspectRatio();
                        $constraint->upsize();
                    },
                ],
            ],
        ];
    }
}