Passed
Branch master (7a0b0e)
by Randy
02:56
created

DeHydrationTest::testDehydration()   B

Complexity

Conditions 1
Paths 1

Size

Total Lines 35
Code Lines 22

Duplication

Lines 0
Ratio 0 %

Importance

Changes 1
Bugs 1 Features 0
Metric Value
dl 0
loc 35
rs 8.8571
c 1
b 1
f 0
cc 1
eloc 22
nc 1
nop 0
1
<?php
2
3
namespace Dgame\Soap\Test;
4
5
use Dgame\Soap\Hydrator\ClassMapper;
6
use Dgame\Soap\Hydrator\Dom\Hydrator;
7
use Dgame\Soap\Test\Object\Address;
8
use Dgame\Soap\Test\Object\Car;
9
use Dgame\Soap\Test\Object\Person;
10
use Dgame\Soap\Test\Object\Phone;
11
use Dgame\Soap\Test\Object\Root;
12
use DOMDocument;
13
use PHPUnit\Framework\TestCase;
14
15
/**
16
 * Class DeHydrationTest
17
 * @package Dgame\Soap\Test
18
 */
19
final class DeHydrationTest extends TestCase
20
{
21
    public function testDehydration()
22
    {
23
        $doc                     = new DOMDocument('1.0', 'utf-8');
24
        $doc->formatOutput       = false;
25
        $doc->preserveWhiteSpace = false;
26
        $doc->load(__DIR__ . '/xml/test1.xml');
27
28
        $mapper = new ClassMapper(
29
            [
30
                'Root'    => Root::class,
31
                'Person'  => Person::class,
32
                'Car'     => Car::class,
33
                'Phone'   => Phone::class,
34
                'Address' => Address::class
35
            ]
36
        );
37
        $mapper->appendPattern('/^(?:soap\-?)?env(?:elope)?/iS', 'Root');
38
39
        $hydrator = new Hydrator($mapper);
40
        $objects  = $hydrator->hydrateDocument($doc);
41
42
        $this->assertCount(1, $objects);
43
44
        /** @var Root $root */
45
        $root = $objects[0];
46
47
        $this->assertNotNull($root);
48
        $this->assertInstanceOf(Root::class, $root);
49
50
        $doc2 = new DOMDocument('1.0', 'utf-8');
51
        $hydrator->assemble($root, $doc2);
52
53
        $xml = preg_replace('#<([^>]+)(\s*[^>]*)></\1>#', '<$1$2/>', $doc2->saveXml());
54
        $this->assertEquals($doc->saveXML(), $xml);
55
    }
56
}