More updates to stop using dev or alpha or beta versions.
[yaffs-website] / web / core / tests / Drupal / Tests / Core / DependencyInjection / DependencySerializationTest.php
1 <?php
2
3 /**
4  * @file
5  * Contains \Drupal\Tests\Core\DependencyInjection\DependencySerializationTest.
6  */
7
8 namespace Drupal\Tests\Core\DependencyInjection;
9
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;
15
16 /**
17  * @coversDefaultClass \Drupal\Core\DependencyInjection\DependencySerializationTrait
18  * @group DependencyInjection
19  */
20 class DependencySerializationTest extends UnitTestCase {
21
22   /**
23    * @covers ::__sleep
24    * @covers ::__wakeup
25    */
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);
34
35     $dependencySerialization = new DependencySerializationTestDummy($service);
36     $dependencySerialization->setContainer($container);
37
38     $string = serialize($dependencySerialization);
39     /** @var \Drupal\Tests\Core\DependencyInjection\DependencySerializationTestDummy $dependencySerialization */
40     $dependencySerialization = unserialize($string);
41
42     $this->assertSame($service, $dependencySerialization->service);
43     $this->assertSame($container, $dependencySerialization->container);
44     $this->assertEmpty($dependencySerialization->getServiceIds());
45   }
46
47   /**
48    * @covers ::__sleep
49    * @covers ::__wakeup
50    */
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);
59
60     $dependencySerialization = new DependencySerializationTestDummy($service);
61     $dependencySerialization->setContainer($container);
62
63     $string = serialize($dependencySerialization);
64     /** @var \Drupal\Tests\Core\DependencyInjection\DependencySerializationTestDummy $dependencySerialization */
65     $dependencySerialization = unserialize($string);
66
67     $this->assertSame($container, $dependencySerialization->container);
68   }
69
70 }
71
72 /**
73  * Defines a test class which has a single service as dependency.
74  */
75 class DependencySerializationTestDummy implements ContainerAwareInterface {
76
77   use DependencySerializationTrait;
78
79   /**
80    * A test service.
81    *
82    * @var \stdClass
83    */
84   public $service;
85
86   /**
87    * The container.
88    *
89    * @var \Symfony\Component\DependencyInjection\ContainerInterface
90    */
91   public $container;
92
93   /**
94    * Constructs a new TestClass object.
95    *
96    * @param \stdClass $service
97    *   A test service.
98    */
99   public function __construct(\stdClass $service) {
100     $this->service = $service;
101   }
102
103   /**
104    * {@inheritdoc}
105    */
106   public function setContainer(ContainerInterface $container = NULL) {
107     $this->container = $container;
108   }
109
110   /**
111    * Gets the stored service IDs.
112    */
113   public function getServiceIds() {
114     return $this->_serviceIds;
115   }
116
117 }