Issue #2893029 by phenaproxima, Sam152, tim.plunkett, dawehner, a.dmitriiev, Berdir: StringTranslationTrait consumers cannot be reliably serialized without DependencySerializationTrait

8.7.x
Alex Pott 2018-08-07 14:49:42 +01:00
parent e4c48af806
commit f4e81e0506
No known key found for this signature in database
GPG Key ID: 31905460D4A69276
2 changed files with 21 additions and 0 deletions

View File

@ -3,6 +3,7 @@
namespace Drupal\Core\Entity;
use Drupal\Component\Plugin\Definition\PluginDefinition;
use Drupal\Core\DependencyInjection\DependencySerializationTrait;
use Drupal\Core\Entity\Exception\EntityTypeIdLengthException;
use Drupal\Core\StringTranslation\StringTranslationTrait;
use Drupal\Core\StringTranslation\TranslatableMarkup;
@ -14,6 +15,7 @@ use Drupal\Core\StringTranslation\TranslatableMarkup;
*/
class EntityType extends PluginDefinition implements EntityTypeInterface {
use DependencySerializationTrait;
use StringTranslationTrait;
/**

View File

@ -5,6 +5,7 @@ namespace Drupal\Tests\Core\Entity;
use Drupal\Core\Entity\EntityType;
use Drupal\Core\Entity\EntityTypeInterface;
use Drupal\Core\StringTranslation\TranslatableMarkup;
use Drupal\Core\StringTranslation\TranslationInterface;
use Drupal\Tests\UnitTestCase;
/**
@ -476,4 +477,22 @@ class EntityTypeTest extends UnitTestCase {
$this->assertEmpty($reflection->getProperties(\ReflectionProperty::IS_PUBLIC));
}
/**
* Test the EntityType object it serializable.
*/
public function testIsSerializable() {
$entity_type = $this->setUpEntityType([]);
$translation = $this->prophesize(TranslationInterface::class);
$translation->willImplement(\Serializable::class);
$translation->serialize()->willThrow(\Exception::class);
$translation_service = $translation->reveal();
$translation_service->_serviceId = 'string_translation';
$entity_type->setStringTranslation($translation_service);
$entity_type = unserialize(serialize($entity_type));
$this->assertEquals('example_entity_type', $entity_type->id());
}
}