Completed
Push — master ( c145d3...226c9c )
by Jérémy
02:36
created

testCanNormalizeNestedArrayObjectInArray()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 11
Code Lines 4

Duplication

Lines 0
Ratio 0 %

Importance

Changes 1
Bugs 0 Features 0
Metric Value
eloc 4
c 1
b 0
f 0
dl 0
loc 11
rs 10
cc 1
nc 1
nop 0
1
<?php
2
3
declare(strict_types=1);
4
5
namespace Th3Mouk\RethinkDB\Translator\Tests;
6
7
use PHPUnit\Framework\TestCase;
8
use r\Connection;
9
use r\Cursor;
10
use Th3Mouk\RethinkDB\Translator\Translate;
11
12
class TranslateTest extends TestCase
13
{
14
    public function testCanNormalizeArrayObjectValues(): void
15
    {
16
        $values = [new \ArrayObject(['foo' => 'bar']),
17
        ];
18
19
        $this->assertEquals(Translate::normalizeValues($values), [
20
            ['foo' => 'bar'],
21
        ]);
22
    }
23
24
    public function testCanNormalizeDateTimeValues(): void
25
    {
26
        $values = [new \DateTime('2000-05-26T13:30:20+0200')];
27
28
        $this->assertEquals(Translate::normalizeValues($values), ['2000-05-26T13:30:20+0200']);
29
    }
30
31
    public function testCanNormalizeNestedValues(): void
32
    {
33
        $values = [
34
            new \ArrayObject([
35
                'foo' => new \DateTime('2000-05-26T13:30:20+0200'),
36
            ]),
37
        ];
38
39
        $this->assertEquals(Translate::normalizeValues($values), [
40
            ['foo' => '2000-05-26T13:30:20+0200'],
41
        ]);
42
    }
43
44
    public function testCanNormalizeNestedArrayObjectInArray(): void
45
    {
46
        $values = [
47
            [
48
                new \ArrayObject(['foo' => 'bar']),
49
            ],
50
        ];
51
52
        $this->assertEquals(Translate::normalizeValues($values), [
53
            [
54
                ['foo' => 'bar'],
55
            ],
56
        ]);
57
    }
58
59
    public function testCanTransformArrayObjectToAssociativeArray(): void
60
    {
61
        $ao = new \ArrayObject(['foo' => 'bar']);
62
63
        $this->assertEquals(Translate::arrayObjectToAssociativeArray($ao), ['foo' => 'bar']);
64
    }
65
66
    /**
67
     * @throws \ReflectionException
68
     */
69
    public function testCanTransformCursorToAssociativeArray(): void
70
    {
71
        $connection = $this->createMock(Connection::class);
72
73
        $data      = new \stdClass();
74
        $data->foo = 'bar';
75
        $data->bar = 'foo';
76
77
        /** @var Connection $connection */
78
        $cursor = new Cursor(
79
            $connection,
80
            [
81
                'r' => [$data],
82
                't' => 2,
83
            ],
84
            'token',
85
            [],
86
            []
87
        );
88
89
        $this->assertEquals(Translate::cursorToAssociativeArray($cursor), [
90
            [
91
                'foo' => 'bar',
92
                'bar' => 'foo',
93
            ],
94
        ]);
95
    }
96
97
    public function testCanTransformArrayOfArrayObjectToAssociativeArray(): void
98
    {
99
        $mockResult = [];
100
101
        $mockResult[] = new \ArrayObject([
102
            'domains' => ['cine.fr'],
103
            'id' => '46ba3de0-3210-4f7b-aac9-c5176daa0cca',
104
            'status_changed_at' => new \DateTime('2000-05-26T13:30:20+0200'),
105
        ]);
106
107
        $mockResult[] = new \ArrayObject([
108
            'domains' => ['nyxinteractive.eu', 'irond.info'],
109
            'id' => '4640ebcb-48f0-4948-8d5b-93cf08d4249c',
110
            'status_changed_at' => new \DateTime('2000-05-27T13:30:20+0200'),
111
        ]);
112
113
        $this->assertEquals(Translate::arrayOfArrayObjectToAssociativeArray($mockResult), [
114
            [
115
                'domains' => ['cine.fr'],
116
                'id' => '46ba3de0-3210-4f7b-aac9-c5176daa0cca',
117
                'status_changed_at' => '2000-05-26T13:30:20+0200',
118
            ],
119
            [
120
                'domains' => ['nyxinteractive.eu', 'irond.info'],
121
                'id' => '4640ebcb-48f0-4948-8d5b-93cf08d4249c',
122
                'status_changed_at' => '2000-05-27T13:30:20+0200',
123
            ],
124
        ]);
125
    }
126
}
127