This repository was archived by the owner on Oct 14, 2020. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 41
Expand file tree
/
Copy pathJSONPathArrayAccessTest.php
More file actions
105 lines (83 loc) · 3.22 KB
/
JSONPathArrayAccessTest.php
File metadata and controls
105 lines (83 loc) · 3.22 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
<?php
namespace Flow\JSONPath\Test;
use Flow\JSONPath\JSONPath;
use PHPUnit\Framework\TestCase;
require_once __DIR__ . "/../vendor/autoload.php";
class JSONPathArrayAccessTest extends TestCase
{
public function testChaining()
{
$data = $this->exampleData(rand(0, 1));
$conferences = (new JSONPath($data))->find('.conferences.*');
$teams = $conferences->find('..teams.*');
$this->assertEquals('Dodger', $teams[0]['name']);
$this->assertEquals('Mets', $teams[1]['name']);
$teams = (new JSONPath($data))->find('.conferences.*')->find('..teams.*');
$this->assertEquals('Dodger', $teams[0]['name']);
$this->assertEquals('Mets', $teams[1]['name']);
$teams = (new JSONPath($data))->find('.conferences..teams.*');
$this->assertEquals('Dodger', $teams[0]['name']);
$this->assertEquals('Mets', $teams[1]['name']);
}
public function testIterating()
{
$data = $this->exampleData(rand(0, 1));
$conferences = (new JSONPath($data))->find('.conferences.*');
$names = [];
foreach ($conferences as $conference) {
$players = $conference->find('.teams.*.players[?(@.active=yes)]');
foreach ($players as $player) {
$names[] = $player->name;
}
}
$this->assertEquals(['Joe Face', 'something'], $names);
}
public function testDifferentStylesOfAccess()
{
$data = $this->exampleData(rand(0, 1));
$league = new JSONPath($data);
$conferences = $league->conferences;
$firstConference = $league->conferences[0];
$this->assertEquals('Western Conference', $firstConference->name);
}
public function exampleData($asArray = true)
{
$data = [
'name' => 'Major League Baseball',
'abbr' => 'MLB',
'conferences' => [
[
'name' => 'Western Conference',
'abbr' => 'West',
'teams' => [
[
'name' => 'Dodger',
'city' => 'Los Angeles',
'whatever' => 'else',
'players' => [
['name' => 'Bob Smith', 'number' => 22],
['name' => 'Joe Face', 'number' => 23, 'active' => 'yes'],
],
]
],
],
[
'name' => 'Eastern Conference',
'abbr' => 'East',
'teams' => [
[
'name' => 'Mets',
'city' => 'New York',
'whatever' => 'else',
'players' => [
['name' => 'something', 'number' => 14, 'active' => 'yes'],
['name' => 'something', 'number' => 15],
]
]
]
]
]
];
return $asArray ? $data : json_decode(json_encode($data));
}
}