You are here

public function FilteredStorageTest::testWriteFilter in Config Filter 8

Same name and namespace in other branches
  1. 8.2 src/Tests/FilteredStorageTest.php \Drupal\config_filter\Tests\FilteredStorageTest::testWriteFilter()

Test the write method invokes the filterWrite in filters.

@dataProvider writeFilterProvider

File

src/Tests/FilteredStorageTest.php, line 210

Class

FilteredStorageTest
Tests StorageWrapper operations using the CachedStorage.

Namespace

Drupal\config_filter\Tests

Code

public function testWriteFilter($interim, $expected, $exists = TRUE) {
  $name = $this
    ->randomString();
  $data = $this
    ->randomArray();
  $source = $this
    ->prophesize(StorageInterface::class);
  $filterA = $this
    ->prophesizeFilter();
  $filterB = $this
    ->prophesizeFilter();
  $filterA
    ->filterWrite($name, $data)
    ->willReturn($interim);
  $interim = is_array($interim) ? $interim : [];
  $filterB
    ->filterWrite($name, $interim)
    ->willReturn($expected);
  if ($expected) {
    $source
      ->write($name, $expected)
      ->willReturn(TRUE);
  }
  else {
    $source
      ->write(Argument::any())
      ->shouldNotBeCalled();
    $source
      ->exists($name)
      ->willReturn($exists);
    if ($exists) {
      $filterA
        ->filterWriteEmptyIsDelete($name)
        ->willReturn(TRUE);
      $source
        ->delete($name)
        ->willReturn(TRUE);
    }
  }
  $storage = new FilteredStorage($source
    ->reveal(), [
    $filterA
      ->reveal(),
    $filterB
      ->reveal(),
  ]);
  $this
    ->assertTrue($storage
    ->write($name, $data));
}