1
|
|
|
<?php |
2
|
|
|
|
3
|
|
|
namespace Aerophant\RamdaTest; |
4
|
|
|
|
5
|
|
|
use function Aerophant\Ramda\path; |
6
|
|
|
use PHPUnit\Framework\TestCase; |
7
|
|
|
|
8
|
|
|
class PathTest extends TestCase |
9
|
|
|
{ |
10
|
|
|
public function testSimplePath() |
11
|
|
|
{ |
12
|
|
|
$paths = ['data']; |
13
|
|
|
$object = ['data' => 'dataValue']; |
14
|
|
|
$expect = 'dataValue'; |
15
|
|
|
$actual = path($paths)($object); |
16
|
|
|
$this->assertEquals($expect, $actual); |
17
|
|
|
} |
18
|
|
|
public function testNestedPath() |
19
|
|
|
{ |
20
|
|
|
$paths = ['data', 'nestedData']; |
21
|
|
|
$object = ['data' => ['nestedData' => 'dataValue']]; |
22
|
|
|
$expect = 'dataValue'; |
23
|
|
|
$actual = path($paths)($object); |
24
|
|
|
$this->assertEquals($expect, $actual); |
25
|
|
|
} |
26
|
|
|
public function testSimplePathAndNotFound() |
27
|
|
|
{ |
28
|
|
|
$paths = ['data']; |
29
|
|
|
$object = ['anotherData' => 'dataValue']; |
30
|
|
|
$actual = path($paths)($object); |
31
|
|
|
$this->assertNull($actual); |
32
|
|
|
} |
33
|
|
|
public function testNestedPathAndNotFound() |
34
|
|
|
{ |
35
|
|
|
$paths = ['data', 'nestedData']; |
36
|
|
|
$object = ['data' => ['anotherNestedData' => 'dataValue']]; |
37
|
|
|
$actual = path($paths)($object); |
38
|
|
|
$this->assertNull($actual); |
39
|
|
|
} |
40
|
|
|
public function testUnsupportedObject() |
41
|
|
|
{ |
42
|
|
|
$this->expectException(\InvalidArgumentException::class); |
43
|
|
|
$paths = ['data', 'nestedData']; |
44
|
|
|
$object = new \stdClass(); |
45
|
|
|
path($paths)($object); |
46
|
|
|
} |
47
|
|
|
} |
48
|
|
|
|