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

DeHydrationTest   A

Complexity

Total Complexity 1

Size/Duplication

Total Lines 38
Duplicated Lines 0 %

Coupling/Cohesion

Components 1
Dependencies 3

Importance

Changes 1
Bugs 1 Features 0
Metric Value
wmc 1
lcom 1
cbo 3
dl 0
loc 38
rs 10
c 1
b 1
f 0

1 Method

Rating   Name   Duplication   Size   Complexity  
B testDehydration() 0 35 1
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
}