Version 1
[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
49 /**
50  * Defines a test class which has a single service as dependency.
51  */
52 class DependencySerializationTestDummy implements ContainerAwareInterface {
53
54   use DependencySerializationTrait;
55
56   /**
57    * A test service.
58    *
59    * @var \stdClass
60    */
61   public $service;
62
63   /**
64    * The container.
65    *
66    * @var \Symfony\Component\DependencyInjection\ContainerInterface
67    */
68   public $container;
69
70   /**
71    * Constructs a new TestClass object.
72    *
73    * @param \stdClass $service
74    *   A test service.
75    */
76   public function __construct(\stdClass $service) {
77     $this->service = $service;
78   }
79
80   /**
81    * {@inheritdoc}
82    */
83   public function setContainer(ContainerInterface $container = NULL) {
84     $this->container = $container;
85   }
86
87   /**
88    * Gets the stored service IDs.
89    */
90   public function getServiceIds() {
91     return $this->_serviceIds;
92   }
93
94 }