function CssCollectionOptimizerLazyUnitTest::testCssLicenseAggregation

Same name in other branches
  1. 10 core/tests/Drupal/Tests/Core/Asset/CssCollectionOptimizerLazyUnitTest.php \Drupal\Tests\Core\Asset\CssCollectionOptimizerLazyUnitTest::testCssLicenseAggregation()

Test that license information is added correctly to aggregated CSS.

Checks that license information is added only once when several files have the same license. Checks that multiple licenses are added properly.

File

core/tests/Drupal/Tests/Core/Asset/CssCollectionOptimizerLazyUnitTest.php, line 88

Class

CssCollectionOptimizerLazyUnitTest
Tests the CSS asset optimizer.

Namespace

Drupal\Tests\Core\Asset

Code

public function testCssLicenseAggregation() : void {
    $mock_grouper = $this->createMock(AssetCollectionGrouperInterface::class);
    $mock_grouper->method('group')
        ->willReturnCallback(function ($assets) {
        return [
            [
                'items' => $assets,
                'type' => 'file',
                'preprocess' => TRUE,
            ],
        ];
    });
    $mock_optimizer = $this->createMock(AssetOptimizerInterface::class);
    $mock_optimizer->method('optimize')
        ->willReturn(file_get_contents(__DIR__ . '/css_test_files/css_input_with_import.css.optimized.css'), file_get_contents(__DIR__ . '/css_test_files/css_subfolder/css_input_with_import.css.optimized.css'), file_get_contents(__DIR__ . '/css_test_files/css_input_without_import.css.optimized.css'));
    $mock_theme_manager = $this->createMock(ThemeManagerInterface::class);
    $mock_dependency_resolver = $this->createMock(LibraryDependencyResolverInterface::class);
    $mock_file_system = $this->createMock(FileSystemInterface::class);
    $mock_config_factory = $this->createMock(ConfigFactoryInterface::class);
    $mock_file_url_generator = $this->createMock(FileUrlGeneratorInterface::class);
    $mock_time = $this->createMock(TimeInterface::class);
    $mock_language = $this->createMock(LanguageManagerInterface::class);
    $optimizer = new CssCollectionOptimizerLazy($mock_grouper, $mock_optimizer, $mock_theme_manager, $mock_dependency_resolver, new RequestStack(), $mock_file_system, $mock_config_factory, $mock_file_url_generator, $mock_time, $mock_language);
    $gpl_license = [
        'name' => 'GPL-2.0-or-later',
        'url' => 'https://www.drupal.org/licensing/faq',
        'gpl-compatible' => TRUE,
    ];
    $aggregate = $optimizer->optimizeGroup([
        'items' => [
            'core/modules/system/tests/modules/common_test/common_test_css_import.css' => [
                'type' => 'file',
                'data' => 'core/modules/system/tests/modules/common_test/common_test_css_import.css',
                'preprocess' => TRUE,
                'license' => $gpl_license,
            ],
            'core/modules/system/tests/modules/common_test/common_test_css_import_not_preprocessed.css' => [
                'type' => 'file',
                'data' => 'core/modules/system/tests/modules/common_test/common_test_css_import.css',
                'preprocess' => TRUE,
                'license' => $gpl_license,
            ],
            'core/modules/system/tests/modules/common_test/css_input_without_import.css' => [
                'type' => 'file',
                'data' => 'core/modules/system/tests/modules/common_test/css_input_without_import.css',
                'preprocess' => TRUE,
                'license' => [
                    'name' => 'MIT',
                    'url' => 'https://opensource.org/licenses/MIT',
                    'gpl-compatible' => TRUE,
                ],
            ],
        ],
    ]);
    self::assertStringEqualsFile(__DIR__ . '/css_test_files/css_license.css.optimized.aggregated.css', $aggregate);
}

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