You are here

public function FilterUninstallValidatorTest::testValidateNoMatchingFormats in Drupal 8

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()

@covers ::validate

File

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

Class

FilterUninstallValidatorTest
@coversDefaultClass \Drupal\filter\FilterUninstallValidator @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));
}