5 * Contains \Drupal\Tests\Core\DependencyInjection\DependencySerializationTest.
8 namespace Drupal\Tests\Core\DependencyInjection;
10 use Drupal\Core\DependencyInjection\Container;
11 use Drupal\Core\DependencyInjection\DependencySerializationTrait;
12 use Drupal\Tests\UnitTestCase;
13 use Symfony\Component\DependencyInjection\ContainerAwareInterface;
14 use Symfony\Component\DependencyInjection\ContainerInterface;
17 * @coversDefaultClass \Drupal\Core\DependencyInjection\DependencySerializationTrait
18 * @group DependencyInjection
20 class DependencySerializationTest extends UnitTestCase {
26 public function testSerialization() {
27 // Create a pseudo service and dependency injected object.
28 $service = new \stdClass();
29 $service->_serviceId = 'test_service';
30 $container = new Container();
31 $container->set('test_service', $service);
32 $container->set('service_container', $container);
33 \Drupal::setContainer($container);
35 $dependencySerialization = new DependencySerializationTestDummy($service);
36 $dependencySerialization->setContainer($container);
38 $string = serialize($dependencySerialization);
39 /** @var \Drupal\Tests\Core\DependencyInjection\DependencySerializationTestDummy $dependencySerialization */
40 $dependencySerialization = unserialize($string);
42 $this->assertSame($service, $dependencySerialization->service);
43 $this->assertSame($container, $dependencySerialization->container);
44 $this->assertEmpty($dependencySerialization->getServiceIds());
51 public function testSerializationWithMissingService() {
52 // Create a pseudo service and dependency injected object.
53 $service = new \stdClass();
54 $service->_serviceId = 'test_service_not_existing';
55 $container = new Container();
56 $container->set('test_service', $service);
57 $container->set('service_container', $container);
58 \Drupal::setContainer($container);
60 $dependencySerialization = new DependencySerializationTestDummy($service);
61 $dependencySerialization->setContainer($container);
63 $string = serialize($dependencySerialization);
64 /** @var \Drupal\Tests\Core\DependencyInjection\DependencySerializationTestDummy $dependencySerialization */
65 $dependencySerialization = unserialize($string);
67 $this->assertSame($container, $dependencySerialization->container);
73 * Defines a test class which has a single service as dependency.
75 class DependencySerializationTestDummy implements ContainerAwareInterface {
77 use DependencySerializationTrait;
89 * @var \Symfony\Component\DependencyInjection\ContainerInterface
94 * Constructs a new TestClass object.
96 * @param \stdClass $service
99 public function __construct(\stdClass $service) {
100 $this->service = $service;
106 public function setContainer(ContainerInterface $container = NULL) {
107 $this->container = $container;
111 * Gets the stored service IDs.
113 public function getServiceIds() {
114 return $this->_serviceIds;