Chris@0
|
1 <?php
|
Chris@0
|
2
|
Chris@0
|
3 namespace Drupal\Tests\Component\Serialization;
|
Chris@0
|
4
|
Chris@0
|
5 use Drupal\Component\Serialization\Exception\InvalidDataTypeException;
|
Chris@0
|
6 use Drupal\Component\Serialization\YamlSymfony;
|
Chris@0
|
7
|
Chris@0
|
8 /**
|
Chris@0
|
9 * Tests the YamlSymfony serialization implementation.
|
Chris@0
|
10 *
|
Chris@0
|
11 * @group Drupal
|
Chris@0
|
12 * @group Serialization
|
Chris@0
|
13 * @coversDefaultClass \Drupal\Component\Serialization\YamlSymfony
|
Chris@0
|
14 */
|
Chris@0
|
15 class YamlSymfonyTest extends YamlTestBase {
|
Chris@0
|
16
|
Chris@0
|
17 /**
|
Chris@0
|
18 * Tests encoding and decoding basic data structures.
|
Chris@0
|
19 *
|
Chris@0
|
20 * @covers ::encode
|
Chris@0
|
21 * @covers ::decode
|
Chris@0
|
22 * @dataProvider providerEncodeDecodeTests
|
Chris@0
|
23 */
|
Chris@0
|
24 public function testEncodeDecode($data) {
|
Chris@0
|
25 $this->assertEquals($data, YamlSymfony::decode(YamlSymfony::encode($data)));
|
Chris@0
|
26 }
|
Chris@0
|
27
|
Chris@0
|
28 /**
|
Chris@0
|
29 * Tests decoding YAML node anchors.
|
Chris@0
|
30 *
|
Chris@0
|
31 * @covers ::decode
|
Chris@0
|
32 * @dataProvider providerDecodeTests
|
Chris@0
|
33 */
|
Chris@0
|
34 public function testDecode($string, $data) {
|
Chris@0
|
35 $this->assertEquals($data, YamlSymfony::decode($string));
|
Chris@0
|
36 }
|
Chris@0
|
37
|
Chris@0
|
38 /**
|
Chris@0
|
39 * Tests our encode settings.
|
Chris@0
|
40 *
|
Chris@0
|
41 * @covers ::encode
|
Chris@0
|
42 */
|
Chris@0
|
43 public function testEncode() {
|
Chris@0
|
44 $this->assertEquals('foo:
|
Chris@0
|
45 bar: \'Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vivamus sapien ex, venenatis vitae nisi eu, posuere luctus dolor. Nullam convallis\'
|
Chris@0
|
46 ', YamlSymfony::encode(['foo' => ['bar' => 'Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vivamus sapien ex, venenatis vitae nisi eu, posuere luctus dolor. Nullam convallis']]));
|
Chris@0
|
47 }
|
Chris@0
|
48
|
Chris@0
|
49 /**
|
Chris@0
|
50 * @covers ::getFileExtension
|
Chris@0
|
51 */
|
Chris@0
|
52 public function testGetFileExtension() {
|
Chris@0
|
53 $this->assertEquals('yml', YamlSymfony::getFileExtension());
|
Chris@0
|
54 }
|
Chris@0
|
55
|
Chris@0
|
56 /**
|
Chris@0
|
57 * Tests that invalid YAML throws an exception.
|
Chris@0
|
58 *
|
Chris@0
|
59 * @covers ::decode
|
Chris@0
|
60 */
|
Chris@0
|
61 public function testError() {
|
Chris@14
|
62 if (method_exists($this, 'expectException')) {
|
Chris@14
|
63 $this->expectException(InvalidDataTypeException::class);
|
Chris@14
|
64 }
|
Chris@14
|
65 else {
|
Chris@14
|
66 $this->setExpectedException(InvalidDataTypeException::class);
|
Chris@14
|
67 }
|
Chris@0
|
68 YamlSymfony::decode('foo: [ads');
|
Chris@0
|
69 }
|
Chris@0
|
70
|
Chris@0
|
71 /**
|
Chris@0
|
72 * Ensures that php object support is disabled.
|
Chris@0
|
73 *
|
Chris@0
|
74 * @covers ::encode
|
Chris@0
|
75 */
|
Chris@0
|
76 public function testObjectSupportDisabled() {
|
Chris@14
|
77 if (method_exists($this, 'expectException')) {
|
Chris@14
|
78 $this->expectException(InvalidDataTypeException::class);
|
Chris@14
|
79 $this->expectExceptionMessage('Object support when dumping a YAML file has been disabled.');
|
Chris@14
|
80 }
|
Chris@14
|
81 else {
|
Chris@14
|
82 $this->setExpectedException(InvalidDataTypeException::class, 'Object support when dumping a YAML file has been disabled.');
|
Chris@14
|
83 }
|
Chris@0
|
84 $object = new \stdClass();
|
Chris@0
|
85 $object->foo = 'bar';
|
Chris@0
|
86 YamlSymfony::encode([$object]);
|
Chris@0
|
87 }
|
Chris@0
|
88
|
Chris@0
|
89 }
|