Completed
Pull Request — master (#3)
by
unknown
02:15
created

testCanTransformArrayObjectToAssociativeArray()   A

Complexity

Conditions 1
Paths 1

Size

Total Lines 5
Code Lines 2

Duplication

Lines 0
Ratio 0 %

Importance

Changes 0
Metric Value
eloc 2
dl 0
loc 5
rs 10
c 0
b 0
f 0
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 testCanOverrideDateTimeToStringOption(): void
45
    {
46
        $values = [new \ArrayObject([
47
            'foo' => new \DateTime('2000-05-26T13:30:20'),
48
        ]),
49
        ];
50
51
        $normalized = Translate::normalizeValues($values, ['dateTimeToString' => false]);
52
53
        $this->assertInstanceOf(\DateTime::class, $normalized[0]['foo']);
54
        $this->assertEquals($normalized[0]['foo']->format(DATE_ISO8601), '2000-05-26T13:30:20+0200');
55
    }
56
57
    public function testCanTransformArrayObjectToAssociativeArray(): void
58
    {
59
        $ao = new \ArrayObject(['foo' => 'bar']);
60
61
        $this->assertEquals(Translate::arrayObjectToAssociativeArray($ao), ['foo' => 'bar']);
62
    }
63
64
    /**
65
     * @throws \ReflectionException
66
     */
67
    public function testCanTransformCursorToAssociativeArray(): void
68
    {
69
        $connection = $this->createMock(Connection::class);
70
71
        $data      = new \stdClass();
72
        $data->foo = 'bar';
73
        $data->bar = 'foo';
74
75
        /** @var Connection $connection */
76
        $cursor = new Cursor(
77
            $connection,
78
            [
79
                'r' => [$data],
80
                't' => 2,
81
            ],
82
            'token',
83
            [],
84
            []
85
        );
86
87
        $this->assertEquals(Translate::cursorToAssociativeArray($cursor), [
88
            [
89
                'foo' => 'bar',
90
                'bar' => 'foo',
91
            ],
92
        ]);
93
    }
94
95
    public function testCanTransformArrayOfArrayObjectToAssociativeArray(): void
96
    {
97
        $mockResult = [];
98
99
        $mockResult[] = new \ArrayObject([
100
            'domains' => ['cine.fr'],
101
            'id' => '46ba3de0-3210-4f7b-aac9-c5176daa0cca',
102
            'status_changed_at' => new \DateTime('2000-05-26T13:30:20+0200'),
103
        ]);
104
105
        $mockResult[] = new \ArrayObject([
106
            'domains' => ['nyxinteractive.eu', 'irond.info'],
107
            'id' => '4640ebcb-48f0-4948-8d5b-93cf08d4249c',
108
            'status_changed_at' => new \DateTime('2000-05-27T13:30:20+0200'),
109
        ]);
110
111
        $this->assertEquals(Translate::arrayOfArrayObjectToAssociativeArray($mockResult), [
112
            [
113
                'domains' => ['cine.fr'],
114
                'id' => '46ba3de0-3210-4f7b-aac9-c5176daa0cca',
115
                'status_changed_at' => '2000-05-26T13:30:20+0200',
116
            ],
117
            [
118
                'domains' => ['nyxinteractive.eu', 'irond.info'],
119
                'id' => '4640ebcb-48f0-4948-8d5b-93cf08d4249c',
120
                'status_changed_at' => '2000-05-27T13:30:20+0200',
121
            ],
122
        ]);
123
    }
124
}
125