Issue #3418189 by longwave, Spokje: Remove withConsecutive() in EntityUnitTest
parent
0ce407c41d
commit
0a61e07ec9
|
@ -3304,11 +3304,6 @@ parameters:
|
||||||
count: 1
|
count: 1
|
||||||
path: tests/Drupal/Tests/Core/DependencyInjection/DependencySerializationTest.php
|
path: tests/Drupal/Tests/Core/DependencyInjection/DependencySerializationTest.php
|
||||||
|
|
||||||
-
|
|
||||||
message: "#^Call to deprecated method withConsecutive\\(\\) of class PHPUnit\\\\Framework\\\\MockObject\\\\Builder\\\\InvocationMocker\\.$#"
|
|
||||||
count: 2
|
|
||||||
path: tests/Drupal/Tests/Core/Entity/EntityUnitTest.php
|
|
||||||
|
|
||||||
-
|
-
|
||||||
message: "#^Trying to mock an undefined method getRevisionId\\(\\) on class Drupal\\\\Tests\\\\Core\\\\Entity\\\\UrlTestEntity\\.$#"
|
message: "#^Trying to mock an undefined method getRevisionId\\(\\) on class Drupal\\\\Tests\\\\Core\\\\Entity\\\\UrlTestEntity\\.$#"
|
||||||
count: 1
|
count: 1
|
||||||
|
|
|
@ -14,6 +14,7 @@ use Drupal\Core\Entity\EntityTypeRepositoryInterface;
|
||||||
use Drupal\Core\Language\Language;
|
use Drupal\Core\Language\Language;
|
||||||
use Drupal\entity_test\Entity\EntityTestMul;
|
use Drupal\entity_test\Entity\EntityTestMul;
|
||||||
use Drupal\Tests\UnitTestCase;
|
use Drupal\Tests\UnitTestCase;
|
||||||
|
use Prophecy\Argument;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @coversDefaultClass \Drupal\Core\Entity\EntityBase
|
* @coversDefaultClass \Drupal\Core\Entity\EntityBase
|
||||||
|
@ -74,7 +75,7 @@ class EntityUnitTest extends UnitTestCase {
|
||||||
/**
|
/**
|
||||||
* The mocked cache tags invalidator.
|
* The mocked cache tags invalidator.
|
||||||
*
|
*
|
||||||
* @var \Drupal\Core\Cache\CacheTagsInvalidatorInterface|\PHPUnit\Framework\MockObject\MockObject
|
* @var \Drupal\Core\Cache\CacheTagsInvalidatorInterface|\Prophecy\Prophecy\ObjectProphecy
|
||||||
*/
|
*/
|
||||||
protected $cacheTagsInvalidator;
|
protected $cacheTagsInvalidator;
|
||||||
|
|
||||||
|
@ -117,13 +118,13 @@ class EntityUnitTest extends UnitTestCase {
|
||||||
->with('en')
|
->with('en')
|
||||||
->willReturn(new Language(['id' => 'en']));
|
->willReturn(new Language(['id' => 'en']));
|
||||||
|
|
||||||
$this->cacheTagsInvalidator = $this->createMock('Drupal\Core\Cache\CacheTagsInvalidator');
|
$this->cacheTagsInvalidator = $this->prophesize('Drupal\Core\Cache\CacheTagsInvalidator');
|
||||||
|
|
||||||
$container = new ContainerBuilder();
|
$container = new ContainerBuilder();
|
||||||
$container->set('entity_type.manager', $this->entityTypeManager);
|
$container->set('entity_type.manager', $this->entityTypeManager);
|
||||||
$container->set('uuid', $this->uuid);
|
$container->set('uuid', $this->uuid);
|
||||||
$container->set('language_manager', $this->languageManager);
|
$container->set('language_manager', $this->languageManager);
|
||||||
$container->set('cache_tags.invalidator', $this->cacheTagsInvalidator);
|
$container->set('cache_tags.invalidator', $this->cacheTagsInvalidator->reveal());
|
||||||
\Drupal::setContainer($container);
|
\Drupal::setContainer($container);
|
||||||
|
|
||||||
$this->entity = new EntityBaseTest($this->values, $this->entityTypeId);
|
$this->entity = new EntityBaseTest($this->values, $this->entityTypeId);
|
||||||
|
@ -401,56 +402,28 @@ class EntityUnitTest extends UnitTestCase {
|
||||||
* @covers ::postSave
|
* @covers ::postSave
|
||||||
*/
|
*/
|
||||||
public function testPostSave() {
|
public function testPostSave() {
|
||||||
$this->cacheTagsInvalidator->expects($this->exactly(2))
|
|
||||||
->method('invalidateTags')
|
|
||||||
->withConsecutive([
|
|
||||||
[
|
|
||||||
// List cache tag.
|
|
||||||
$this->entityTypeId . '_list',
|
|
||||||
],
|
|
||||||
],
|
|
||||||
[
|
|
||||||
[
|
|
||||||
// List cache tag.
|
|
||||||
$this->entityTypeId . '_list',
|
|
||||||
// Own cache tag.
|
|
||||||
$this->entityTypeId . ':' . $this->values['id'],
|
|
||||||
],
|
|
||||||
]);
|
|
||||||
|
|
||||||
// This method is internal, so check for errors on calling it only.
|
// This method is internal, so check for errors on calling it only.
|
||||||
$storage = $this->createMock('\Drupal\Core\Entity\EntityStorageInterface');
|
$storage = $this->createMock('\Drupal\Core\Entity\EntityStorageInterface');
|
||||||
|
|
||||||
// A creation should trigger the invalidation of the "list" cache tag.
|
// A creation should trigger the invalidation of the "list" cache tag.
|
||||||
$this->entity->postSave($storage, FALSE);
|
$this->entity->postSave($storage, FALSE);
|
||||||
|
$this->cacheTagsInvalidator->invalidateTags([
|
||||||
|
$this->entityTypeId . '_list',
|
||||||
|
])->shouldHaveBeenCalledOnce();
|
||||||
|
|
||||||
// An update should trigger the invalidation of both the "list" and the
|
// An update should trigger the invalidation of both the "list" and the
|
||||||
// "own" cache tags.
|
// "own" cache tags.
|
||||||
$this->entity->postSave($storage, TRUE);
|
$this->entity->postSave($storage, TRUE);
|
||||||
|
$this->cacheTagsInvalidator->invalidateTags([
|
||||||
|
$this->entityTypeId . '_list',
|
||||||
|
$this->entityTypeId . ':' . $this->values['id'],
|
||||||
|
])->shouldHaveBeenCalledOnce();
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @covers ::postSave
|
* @covers ::postSave
|
||||||
*/
|
*/
|
||||||
public function testPostSaveBundle() {
|
public function testPostSaveBundle() {
|
||||||
$this->cacheTagsInvalidator->expects($this->exactly(2))
|
|
||||||
->method('invalidateTags')
|
|
||||||
->withConsecutive([
|
|
||||||
[
|
|
||||||
// List cache tag.
|
|
||||||
$this->entityTypeId . '_list',
|
|
||||||
$this->entityTypeId . '_list:' . $this->entity->bundle(),
|
|
||||||
],
|
|
||||||
],
|
|
||||||
[
|
|
||||||
[
|
|
||||||
// List cache tag.
|
|
||||||
$this->entityTypeId . '_list',
|
|
||||||
$this->entityTypeId . '_list:' . $this->entity->bundle(),
|
|
||||||
// Own cache tag.
|
|
||||||
$this->entityTypeId . ':' . $this->values['id'],
|
|
||||||
],
|
|
||||||
]);
|
|
||||||
|
|
||||||
$this->entityType->expects($this->atLeastOnce())
|
$this->entityType->expects($this->atLeastOnce())
|
||||||
->method('hasKey')
|
->method('hasKey')
|
||||||
->with('bundle')
|
->with('bundle')
|
||||||
|
@ -462,9 +435,19 @@ class EntityUnitTest extends UnitTestCase {
|
||||||
// A creation should trigger the invalidation of the global list cache tag
|
// A creation should trigger the invalidation of the global list cache tag
|
||||||
// and the one for the bundle.
|
// and the one for the bundle.
|
||||||
$this->entity->postSave($storage, FALSE);
|
$this->entity->postSave($storage, FALSE);
|
||||||
|
$this->cacheTagsInvalidator->invalidateTags([
|
||||||
|
$this->entityTypeId . '_list',
|
||||||
|
$this->entityTypeId . '_list:' . $this->entity->bundle(),
|
||||||
|
])->shouldHaveBeenCalledOnce();
|
||||||
|
|
||||||
// An update should trigger the invalidation of the "list", bundle list and
|
// An update should trigger the invalidation of the "list", bundle list and
|
||||||
// the "own" cache tags.
|
// the "own" cache tags.
|
||||||
$this->entity->postSave($storage, TRUE);
|
$this->entity->postSave($storage, TRUE);
|
||||||
|
$this->cacheTagsInvalidator->invalidateTags([
|
||||||
|
$this->entityTypeId . '_list',
|
||||||
|
$this->entityTypeId . '_list:' . $this->entity->bundle(),
|
||||||
|
$this->entityTypeId . ':' . $this->values['id'],
|
||||||
|
])->shouldHaveBeenCalledOnce();
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -502,12 +485,6 @@ class EntityUnitTest extends UnitTestCase {
|
||||||
* @covers ::postDelete
|
* @covers ::postDelete
|
||||||
*/
|
*/
|
||||||
public function testPostDelete() {
|
public function testPostDelete() {
|
||||||
$this->cacheTagsInvalidator->expects($this->once())
|
|
||||||
->method('invalidateTags')
|
|
||||||
->with([
|
|
||||||
$this->entityTypeId . '_list',
|
|
||||||
$this->entityTypeId . ':' . $this->values['id'],
|
|
||||||
]);
|
|
||||||
$storage = $this->createMock('\Drupal\Core\Entity\EntityStorageInterface');
|
$storage = $this->createMock('\Drupal\Core\Entity\EntityStorageInterface');
|
||||||
$storage->expects($this->once())
|
$storage->expects($this->once())
|
||||||
->method('getEntityType')
|
->method('getEntityType')
|
||||||
|
@ -515,24 +492,17 @@ class EntityUnitTest extends UnitTestCase {
|
||||||
|
|
||||||
$entities = [$this->values['id'] => $this->entity];
|
$entities = [$this->values['id'] => $this->entity];
|
||||||
$this->entity->postDelete($storage, $entities);
|
$this->entity->postDelete($storage, $entities);
|
||||||
|
|
||||||
|
$this->cacheTagsInvalidator->invalidateTags([
|
||||||
|
$this->entityTypeId . '_list',
|
||||||
|
$this->entityTypeId . ':' . $this->values['id'],
|
||||||
|
])->shouldHaveBeenCalledOnce();
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @covers ::postDelete
|
* @covers ::postDelete
|
||||||
*/
|
*/
|
||||||
public function testPostDeleteBundle() {
|
public function testPostDeleteBundle() {
|
||||||
$this->cacheTagsInvalidator->expects($this->once())
|
|
||||||
->method('invalidateTags')
|
|
||||||
// with() also asserts on the order of array values and array keys that
|
|
||||||
// is something we should avoid here.
|
|
||||||
->willReturnCallback(function (array $tags) {
|
|
||||||
self::assertEqualsCanonicalizing([
|
|
||||||
$this->entityTypeId . '_list',
|
|
||||||
$this->entityTypeId . ':' . $this->values['id'],
|
|
||||||
$this->entityTypeId . '_list:' . $this->entity->bundle(),
|
|
||||||
], $tags);
|
|
||||||
return NULL;
|
|
||||||
});
|
|
||||||
$this->entityType->expects($this->atLeastOnce())
|
$this->entityType->expects($this->atLeastOnce())
|
||||||
->method('hasKey')
|
->method('hasKey')
|
||||||
->with('bundle')
|
->with('bundle')
|
||||||
|
@ -544,6 +514,14 @@ class EntityUnitTest extends UnitTestCase {
|
||||||
|
|
||||||
$entities = [$this->values['id'] => $this->entity];
|
$entities = [$this->values['id'] => $this->entity];
|
||||||
$this->entity->postDelete($storage, $entities);
|
$this->entity->postDelete($storage, $entities);
|
||||||
|
|
||||||
|
// We avoid asserting on the order of array values, just that the values
|
||||||
|
// all exist.
|
||||||
|
$this->cacheTagsInvalidator->invalidateTags(Argument::allOf(
|
||||||
|
Argument::containing($this->entityTypeId . '_list'),
|
||||||
|
Argument::containing($this->entityTypeId . ':' . $this->values['id']),
|
||||||
|
Argument::containing($this->entityTypeId . '_list:' . $this->entity->bundle()),
|
||||||
|
))->shouldHaveBeenCalledOnce();
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
Loading…
Reference in New Issue