function CssCollectionOptimizerUnitTest::testCssLicenseAggregation

Tests that CSS imports with strange letters do not destroy the CSS output.

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

@group legacy

File

core/tests/Drupal/Tests/Core/Asset/CssCollectionOptimizerUnitTest.php, line 98

Class

CssCollectionOptimizerUnitTest
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_dumper = $this->createMock(AssetDumperInterface::class);
    $mock_dumper->method('dump')
        ->willReturnCallback(function ($css) {
        $this->dumperData = $css;
    });
    $mock_state = $this->createMock(StateInterface::class);
    $mock_file_system = $this->createMock(FileSystemInterface::class);
    $this->optimizer = new CssCollectionOptimizer($mock_grouper, $mock_optimizer, $mock_dumper, $mock_state, $mock_file_system);
    $gpl_license = [
        'name' => 'GPL-2.0-or-later',
        'url' => 'https://www.drupal.org/licensing/faq',
        'gpl-compatible' => TRUE,
    ];
    $this->optimizer
        ->optimize([
        '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::assertEquals(file_get_contents(__DIR__ . '/css_test_files/css_license.css.optimized.aggregated.css'), $this->dumperData);
}

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