MimeTypePassTest.php

Namespace

Drupal\Tests\Core\DependencyInjection\Compiler

File

core/tests/Drupal/Tests/Core/DependencyInjection/Compiler/MimeTypePassTest.php

View source
<?php

namespace Drupal\Tests\Core\DependencyInjection\Compiler;

use Drupal\Core\DependencyInjection\Compiler\MimeTypePass;
use Drupal\Tests\UnitTestCase;
use Symfony\Component\DependencyInjection\ContainerBuilder;
use Symfony\Component\HttpFoundation\File\MimeType\MimeTypeGuesserInterface as LegacyMimeTypeGuesserInterface;
use Symfony\Component\Mime\MimeTypeGuesserInterface;
use Drupal\Core\File\MimeType\MimeTypeGuesser;

/**
 * @coversDefaultClass \Drupal\Core\DependencyInjection\Compiler\MimeTypePass
 * @group DependencyInjection
 * @group legacy
 * @runInSeparateProcess
 */
class MimeTypePassTest extends UnitTestCase {
    protected function buildContainer($environment = 'dev') {
        $container = new ContainerBuilder();
        $container->setParameter('kernel.environment', $environment);
        return $container;
    }
    
    /**
     * Tests backwards compatibility shim for MimeTypeGuesser interface changes.
     */
    public function testProcessLegacy() {
        $this->expectDeprecation('The "Drupal\\Tests\\Core\\DependencyInjection\\Compiler\\LegacyMimeTypeGuesser" class implements "Symfony\\Component\\HttpFoundation\\File\\MimeType\\MimeTypeGuesserInterface" that is deprecated since Symfony 4.3, use {@link MimeTypesInterface} instead.');
        $container = $this->buildContainer();
        $container->register('file.mime_type.guesser', MimeTypeGuesser::class);
        $container->register('handler1', __NAMESPACE__ . '\\NewMimeTypeGuesser')
            ->addTag('mime_type_guesser', [
            'priority' => 200,
        ]);
        $container->register('handler2', __NAMESPACE__ . '\\LegacyMimeTypeGuesser')
            ->addTag('mime_type_guesser', [
            'priority' => 100,
        ]);
        $handler_pass = new MimeTypePass();
        $handler_pass->process($container);
        $method_calls = $container->getDefinition('file.mime_type.guesser')
            ->getMethodCalls();
        $this->assertCount(2, $method_calls);
        $this->assertSame(200, $method_calls[0][1][1]);
        $this->assertSame(100, $method_calls[1][1][1]);
    }

}
class NewMimeTypeGuesser implements MimeTypeGuesserInterface {
    public function guessMimeType(string $string) : string {
        return '';
    }
    public function isGuesserSupported() : bool {
        return TRUE;
    }

}
class LegacyMimeTypeGuesser implements LegacyMimeTypeGuesserInterface {
    public function guess($string) {
    }

}

Classes

Title Deprecated Summary
LegacyMimeTypeGuesser
MimeTypePassTest @coversDefaultClass \Drupal\Core\DependencyInjection\Compiler\MimeTypePass @group DependencyInjection @group legacy @runInSeparateProcess
NewMimeTypeGuesser

Buggy or inaccurate documentation? Please file an issue. Need support? Need help programming? Connect with the Drupal community.