diff --git a/core/modules/views_ui/tests/src/Unit/ViewUIObjectTest.php b/core/modules/views_ui/tests/src/Unit/ViewUIObjectTest.php index 60a9d16..11fb516 100644 --- a/core/modules/views_ui/tests/src/Unit/ViewUIObjectTest.php +++ b/core/modules/views_ui/tests/src/Unit/ViewUIObjectTest.php @@ -9,6 +9,7 @@ use Drupal\Core\Language\LanguageInterface; use Drupal\Tests\UnitTestCase; +use Drupal\views\Entity\View; use Drupal\views\ViewExecutable; use Drupal\views_ui\ViewUI; use Symfony\Component\DependencyInjection\Container; @@ -113,4 +114,32 @@ public function testIsLocked() { $this->assertFalse($view_ui->isLocked()); } + /** + * Tests serialization if the ViewUI object. + */ + public function testSerialization() { + // Set a container so the DependencySerializationTrait has it. + $container = new ContainerBuilder(); + \Drupal::setContainer($container); + + $storage = new View([], 'view'); + $executable = $this->getMockBuilder('Drupal\views\ViewExecutable') + ->disableOriginalConstructor() + ->setConstructorArgs([$storage]) + ->getMock(); + + $view_ui = new ViewUI($storage, $executable); + + // Make sure the executable is returned before serializing. + $this->assertInstanceOf('Drupal\views\ViewExecutable', $view_ui->getExecutable()); + + $serialized = serialize($view_ui); + + // Make sure the ViewExecutable clas is not found in the serialized string. + $this->assertSame(strpos($serialized, '"Drupal\views\ViewExecutable"'), FALSE); + + $unserialized = unserialize($serialized); + $this->assertInstanceOf('Drupal\views_ui\ViewUI', $unserialized); + } + }