AbstractImageTest.php 2.85 KB
Newer Older
Antonio Ramirez committed
1 2 3 4
<?php
namespace yiiunit\extensions\imagine;

use Yii;
5
use yii\imagine\Image;
Antonio Ramirez committed
6 7 8
use Imagine\Image\Point;
use yiiunit\VendorTestCase;

Qiang Xue committed
9
Yii::setAlias('@yii/imagine', __DIR__ . '/../../../../extensions/imagine');
Antonio Ramirez committed
10 11 12

abstract class AbstractImageTest extends VendorTestCase
{
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
    protected $imageFile;
    protected $watermarkFile;
    protected $runtimeTextFile;
    protected $runtimeWatermarkFile;

    protected function setUp()
    {
        $this->imageFile = Yii::getAlias('@yiiunit/data/imagine/large') . '.jpg';
        $this->watermarkFile = Yii::getAlias('@yiiunit/data/imagine/xparent') . '.gif';
        $this->runtimeTextFile = Yii::getAlias('@yiiunit/runtime/image-text-test') . '.png';
        $this->runtimeWatermarkFile = Yii::getAlias('@yiiunit/runtime/image-watermark-test') . '.png';
        parent::setUp();
    }

    protected function tearDown()
    {
        @unlink($this->runtimeTextFile);
        @unlink($this->runtimeWatermarkFile);
    }

    public function testText()
    {
        if (!$this->isFontTestSupported()) {
            $this->markTestSkipped('Skipping ImageGdTest Gd not installed');
        }

        $fontFile = Yii::getAlias('@yiiunit/data/imagine/GothamRnd-Light') . '.otf';

        $img = Image::text($this->imageFile, 'Yii-2 Image', $fontFile, [0, 0], [
            'size' => 12,
            'color' => '000'
        ]);

        $img->save($this->runtimeTextFile);
        $this->assertTrue(file_exists($this->runtimeTextFile));

    }

    public function testCrop()
    {
        $point = [20, 20];
        $img = Image::crop($this->imageFile, 100, 100, $point);

        $this->assertEquals(100, $img->getSize()->getWidth());
        $this->assertEquals(100, $img->getSize()->getHeight());

    }

    public function testWatermark()
    {
        $img = Image::watermark($this->imageFile, $this->watermarkFile);
        $img->save($this->runtimeWatermarkFile);
        $this->assertTrue(file_exists($this->runtimeWatermarkFile));
    }

    public function testFrame()
    {
        $frameSize = 5;
        $original = Image::getImagine()->open($this->imageFile);
        $originalSize = $original->getSize();
        $img = Image::frame($this->imageFile, $frameSize, '666', 0);
        $size = $img->getSize();

        $this->assertEquals($size->getWidth(), $originalSize->getWidth() + ($frameSize * 2));
    }

    public function testThumbnail()
    {
        $img = Image::thumbnail($this->imageFile, 120, 120);

        $this->assertEquals(120, $img->getSize()->getWidth());
        $this->assertEquals(120, $img->getSize()->getHeight());
    }

    /**
     * @expectedException \yii\base\InvalidConfigException
     */
    public function testShouldThrowExceptionOnDriverInvalidArgument()
    {
        Image::setImagine(null);
        Image::$driver = 'fake-driver';
        Image::getImagine();
    }

    abstract protected function isFontTestSupported();
Antonio Ramirez committed
98
}