You are here

class AdvPngTest in Image Optimize Binaries 8

Tests AdvPng image optimize plugin.

@group imageapi_optimize

Hierarchy

Expanded class hierarchy of AdvPngTest

File

tests/src/Unit/AdvPngTest.php, line 12

Namespace

Drupal\Tests\imageapi_optimize_binaries\Unit
View source
class AdvPngTest extends BinaryTestCase {

  /**
   * Test that the default config of the plugin is set.
   */
  public function testDefaultConfig() {
    $config = [];
    $loggerMock = $this
      ->getLoggerMock();
    $imageFactoryMock = $this
      ->getImageFactoryMock();
    $fileSystemMock = $this
      ->getFileSystemMock();
    $shellOperationsMock = $this
      ->getShellOperationsMock();
    $advpng = new AdvPng($config, 'advpng', [], $loggerMock, $imageFactoryMock, $fileSystemMock, $shellOperationsMock);
    $this
      ->assertArrayHasKey('recompress', $advpng
      ->defaultConfiguration());
    $this
      ->assertArrayHasKey('mode', $advpng
      ->defaultConfiguration());
  }

  /**
   * Test that the AdvPng plugin does not run on JPGs
   */
  public function testOnlyApplyToPNG() {
    $config = [];
    $loggerMock = $this
      ->getLoggerMock();
    $imageFactoryMock = $this
      ->getImageFactoryMock();
    $fileSystemMock = $this
      ->getFileSystemMock();
    $shellOperationsMock = $this
      ->getShellOperationsMock();
    $advpng = new AdvPng($config, 'advpng', [], $loggerMock, $imageFactoryMock, $fileSystemMock, $shellOperationsMock);
    $imagePNGMock = $this
      ->createMock('\\Drupal\\Core\\Image\\ImageInterface');
    $imagePNGMock
      ->method('getMimeType')
      ->willReturn('image/jpeg');
    $imageFactoryMock
      ->method('get')
      ->willReturn($imagePNGMock);

    // Assert no call is made through to the shell commands.
    $shellOperationsMock
      ->expects($this
      ->never())
      ->method('execShellCommand');

    // And assert that a 'jpg' isn't processed.
    $this
      ->assertFalse($advpng
      ->applyToImage('public://test_image.jpg'));
  }

  /**
   * @dataProvider advpngProvider
   */
  public function testPNGOptimized($config, $options) {
    $loggerMock = $this
      ->getLoggerMock();
    $imageFactoryMock = $this
      ->getImageFactoryMock();
    $fileSystemMock = $this
      ->getFileSystemMock();
    $shellOperationsMock = $this
      ->getShellOperationsMock();
    $advpng = new AdvPng([
      'data' => $config,
    ], 'advpng', [], $loggerMock, $imageFactoryMock, $fileSystemMock, $shellOperationsMock);
    $imagePNGMock = $this
      ->createMock('\\Drupal\\Core\\Image\\ImageInterface');
    $imagePNGMock
      ->method('getMimeType')
      ->willReturn('image/png');
    $imageFactoryMock
      ->method('get')
      ->willReturn($imagePNGMock);
    $shellOperationsMock
      ->expects($this
      ->once())
      ->method('execShellCommand')
      ->with($this
      ->equalTo('advpng'), $this
      ->identicalTo($options), $this
      ->identicalTo([
      'public://test_image.png',
    ]));
    $advpng
      ->applyToImage('public://test_image.png');
  }

  /**
   * Provides config and the associated options that should be sent to advpng for thos options.
   *
   * @return array
   */
  public function advpngProvider() {
    $cases = [];
    $cases[] = [
      [],
      [
        '--quiet',
        '--recompress',
        '-3',
      ],
    ];
    $cases[] = [
      [
        'recompress' => FALSE,
      ],
      [
        '--quiet',
        '-3',
      ],
    ];
    $cases[] = [
      [
        'recompress' => FALSE,
        'mode' => 1,
      ],
      [
        '--quiet',
        '-1',
      ],
    ];
    $cases[] = [
      [
        'mode' => 0,
      ],
      [
        '--quiet',
        '--recompress',
        '-0',
      ],
    ];
    $cases[] = [
      [
        'mode' => 4,
      ],
      [
        '--quiet',
        '--recompress',
        '-4',
      ],
    ];
    return $cases;
  }

}

Members

Namesort descending Modifiers Type Description Overrides
AdvPngTest::advpngProvider public function Provides config and the associated options that should be sent to advpng for thos options.
AdvPngTest::testDefaultConfig public function Test that the default config of the plugin is set.
AdvPngTest::testOnlyApplyToPNG public function Test that the AdvPng plugin does not run on JPGs
AdvPngTest::testPNGOptimized public function @dataProvider advpngProvider
BinaryTestCase::getFileSystemMock protected function
BinaryTestCase::getImageFactoryMock protected function
BinaryTestCase::getLoggerMock protected function
BinaryTestCase::getShellOperationsMock protected function
PhpunitCompatibilityTrait::getMock Deprecated public function Returns a mock object for the specified class using the available method.
PhpunitCompatibilityTrait::setExpectedException Deprecated public function Compatibility layer for PHPUnit 6 to support PHPUnit 4 code.
UnitTestCase::$randomGenerator protected property The random generator.
UnitTestCase::$root protected property The app root. 1
UnitTestCase::assertArrayEquals protected function Asserts if two arrays are equal by sorting them first.
UnitTestCase::getBlockMockWithMachineName Deprecated protected function Mocks a block with a block plugin. 1
UnitTestCase::getClassResolverStub protected function Returns a stub class resolver.
UnitTestCase::getConfigFactoryStub public function Returns a stub config factory that behaves according to the passed array.
UnitTestCase::getConfigStorageStub public function Returns a stub config storage that returns the supplied configuration.
UnitTestCase::getContainerWithCacheTagsInvalidator protected function Sets up a container with a cache tags invalidator.
UnitTestCase::getRandomGenerator protected function Gets the random generator for the utility methods.
UnitTestCase::getStringTranslationStub public function Returns a stub translation manager that just returns the passed string.
UnitTestCase::randomMachineName public function Generates a unique random string containing letters and numbers.
UnitTestCase::setUp protected function 340