function FilterUninstallValidatorTest::testValidateNoMatchingFormats

Same name and namespace in other branches
  1. 9 core/modules/filter/tests/src/Unit/FilterUninstallValidatorTest.php \Drupal\Tests\filter\Unit\FilterUninstallValidatorTest::testValidateNoMatchingFormats()
  2. 10 core/modules/filter/tests/src/Unit/FilterUninstallValidatorTest.php \Drupal\Tests\filter\Unit\FilterUninstallValidatorTest::testValidateNoMatchingFormats()
  3. 11.x core/modules/filter/tests/src/Unit/FilterUninstallValidatorTest.php \Drupal\Tests\filter\Unit\FilterUninstallValidatorTest::testValidateNoMatchingFormats()

@covers ::validate

File

core/modules/filter/tests/src/Unit/FilterUninstallValidatorTest.php, line 74

Class

FilterUninstallValidatorTest
@coversDefaultClass <a href="/api/drupal/core%21modules%21filter%21src%21FilterUninstallValidator.php/class/FilterUninstallValidator/8.9.x" title="Prevents uninstallation of modules providing used filter plugins." class="local">\Drupal\filter\FilterUninstallValidator</a> @group filter

Namespace

Drupal\Tests\filter\Unit

Code

public function testValidateNoMatchingFormats() {
    $this->filterUninstallValidator
        ->expects($this->once())
        ->method('getFilterDefinitionsByProvider')
        ->willReturn([
        'test_filter_plugin1' => [
            'id' => 'test_filter_plugin1',
            'provider' => 'filter_test',
        ],
        'test_filter_plugin2' => [
            'id' => 'test_filter_plugin2',
            'provider' => 'filter_test',
        ],
        'test_filter_plugin3' => [
            'id' => 'test_filter_plugin3',
            'provider' => 'filter_test',
        ],
        'test_filter_plugin4' => [
            'id' => 'test_filter_plugin4',
            'provider' => 'filter_test',
        ],
    ]);
    $filter_plugin_enabled = $this->getMockForAbstractClass('Drupal\\filter\\Plugin\\FilterBase', [
        [
            'status' => TRUE,
        ],
        '',
        [
            'provider' => 'filter_test',
        ],
    ]);
    $filter_plugin_disabled = $this->getMockForAbstractClass('Drupal\\filter\\Plugin\\FilterBase', [
        [
            'status' => FALSE,
        ],
        '',
        [
            'provider' => 'filter_test',
        ],
    ]);
    // The first format has 2 matching and enabled filters, but the loop breaks
    // after finding the first one.
    $filter_plugin_collection1 = $this->getMockBuilder('Drupal\\filter\\FilterPluginCollection')
        ->disableOriginalConstructor()
        ->getMock();
    $filter_plugin_collection1->expects($this->exactly(3))
        ->method('has')
        ->willReturnMap([
        [
            'test_filter_plugin1',
            FALSE,
        ],
        [
            'test_filter_plugin2',
            TRUE,
        ],
        [
            'test_filter_plugin3',
            TRUE,
        ],
        [
            'test_filter_plugin4',
            TRUE,
        ],
    ]);
    $filter_plugin_collection1->expects($this->exactly(2))
        ->method('get')
        ->willReturnMap([
        [
            'test_filter_plugin2',
            $filter_plugin_disabled,
        ],
        [
            'test_filter_plugin3',
            $filter_plugin_enabled,
        ],
        [
            'test_filter_plugin4',
            $filter_plugin_enabled,
        ],
    ]);
    $filter_format1 = $this->createMock('Drupal\\filter\\FilterFormatInterface');
    $filter_format1->expects($this->once())
        ->method('filters')
        ->willReturn($filter_plugin_collection1);
    $filter_format1->expects($this->once())
        ->method('label')
        ->willReturn('Filter Format 1 Label');
    // The second filter format only has one matching and enabled filter.
    $filter_plugin_collection2 = $this->getMockBuilder('Drupal\\filter\\FilterPluginCollection')
        ->disableOriginalConstructor()
        ->getMock();
    $filter_plugin_collection2->expects($this->exactly(4))
        ->method('has')
        ->willReturnMap([
        [
            'test_filter_plugin1',
            FALSE,
        ],
        [
            'test_filter_plugin2',
            FALSE,
        ],
        [
            'test_filter_plugin3',
            FALSE,
        ],
        [
            'test_filter_plugin4',
            TRUE,
        ],
    ]);
    $filter_plugin_collection2->expects($this->exactly(1))
        ->method('get')
        ->with('test_filter_plugin4')
        ->willReturn($filter_plugin_enabled);
    $filter_format2 = $this->createMock('Drupal\\filter\\FilterFormatInterface');
    $filter_format2->expects($this->once())
        ->method('filters')
        ->willReturn($filter_plugin_collection2);
    $filter_format2->expects($this->once())
        ->method('label')
        ->willReturn('Filter Format 2 Label');
    $this->filterUninstallValidator
        ->expects($this->once())
        ->method('getEnabledFilterFormats')
        ->willReturn([
        'test_filter_format1' => $filter_format1,
        'test_filter_format2' => $filter_format2,
    ]);
    $expected = [
        'Provides a filter plugin that is in use in the following filter formats: <em class="placeholder">Filter Format 1 Label, Filter Format 2 Label</em>',
    ];
    $reasons = $this->filterUninstallValidator
        ->validate($this->randomMachineName());
    $this->assertSame($expected, $this->castSafeStrings($reasons));
}

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