Completed
Pull Request — master (#2)
by
unknown
04:06
created

TranslateTest   A

Complexity

Total Complexity 5

Size/Duplication

Total Lines 61
Duplicated Lines 0 %

Importance

Changes 0
Metric Value
wmc 5
eloc 24
dl 0
loc 61
rs 10
c 0
b 0
f 0

5 Methods

Rating   Name   Duplication   Size   Complexity  
A testCanNormalizeArrayObjectValues() 0 7 1
A testCanTransformCursorToAssociativeArray() 0 23 1
A testCanNormalizeDateTimeValues() 0 5 1
A testCanNormalizeNestedValues() 0 9 1
A testCanTransformArrayObjectToAssociativeArray() 0 5 1
1
<?php
2
3
declare(strict_types=1);
4
5
namespace Th3Mouk\RethinkDB\Translator\Tests;
6
7
use ArrayObject;
8
use DateTime;
9
use PHPUnit\Framework\TestCase;
10
use r\Connection;
11
use r\Cursor;
12
use stdClass;
13
use Th3Mouk\RethinkDB\Translator\Translate;
14
15
class TranslateTest extends TestCase
16
{
17
    public function testCanNormalizeArrayObjectValues(): void
18
    {
19
        $values = [new ArrayObject(['foo' => 'bar']),
20
        ];
21
22
        $this->assertEquals(Translate::normalizeValues($values), [
23
            ['foo' => 'bar'],
24
        ]);
25
    }
26
27
    public function testCanNormalizeDateTimeValues(): void
28
    {
29
        $values = [new DateTime('2000-05-26T13:30:20')];
30
31
        $this->assertEquals(Translate::normalizeValues($values), ['2000-05-26T13:30:20+0200']);
32
    }
33
34
    public function testCanNormalizeNestedValues(): void
35
    {
36
        $values = [new ArrayObject([
37
            'foo' => new DateTime('2000-05-26T13:30:20'),
38
        ]),
39
        ];
40
41
        $this->assertEquals(Translate::normalizeValues($values), [
42
            ['foo' => '2000-05-26T13:30:20+0200'],
43
        ]);
44
    }
45
46
    public function testCanTransformArrayObjectToAssociativeArray(): void
47
    {
48
        $ao = new ArrayObject(['foo' => 'bar']);
49
50
        $this->assertEquals(Translate::arrayObjectToAssociativeArray($ao), ['foo' => 'bar']);
51
    }
52
53
    public function testCanTransformCursorToAssociativeArray(): void
54
    {
55
        $connection = $this->createMock(Connection::class);
56
57
        $data      = new stdClass();
58
        $data->foo = 'bar';
59
        $data->bar = 'foo';
60
61
        $cursor = new Cursor(
62
            $connection,
63
            [
64
                'r' => [$data],
65
                't' => 2,
66
            ],
67
            'token',
68
            [],
69
            []
70
        );
71
72
        $this->assertEquals(Translate::cursorToAssociativeArray($cursor), [
73
            [
74
                'foo' => 'bar',
75
                'bar' => 'foo',
76
            ],
77
        ]);
78
    }
79
}
80