These results are based on our legacy PHP analysis, consider migrating to our new PHP analysis engine instead. Learn more
1 | <?php |
||
2 | |||
3 | namespace Huntie\JsonApi\Testing; |
||
4 | |||
5 | /** |
||
6 | * Extend TestCase with additional JSON API related assertions. |
||
7 | */ |
||
8 | trait JsonApiAssertions |
||
9 | { |
||
10 | /** |
||
11 | * Assert that all given keys are set in an associative array. Nested |
||
12 | * members may be specified using dot notation. |
||
13 | * |
||
14 | * @param array $keys |
||
15 | * @param array $array |
||
16 | * |
||
17 | * @throws PHPUnit_Framework_AssertionFailedError |
||
18 | */ |
||
19 | public function assertArrayHasAll(array $keys, array $array) |
||
20 | { |
||
21 | foreach ($keys as $key) { |
||
22 | if (!array_has($array, $key)) { |
||
23 | $this->fail('Failed asserting that key "' . $key . '" exists in input array.'); |
||
0 ignored issues
–
show
|
|||
24 | } |
||
25 | } |
||
26 | } |
||
27 | |||
28 | /** |
||
29 | * Assert that an array contains a valid JSON API resource identifier. |
||
30 | * |
||
31 | * @param array $array |
||
32 | * @param string|null $type |
||
33 | * @param mixed $id |
||
34 | * |
||
35 | * @throws PHPUnit_Framework_AssertionFailedError |
||
36 | */ |
||
37 | public function assertJsonApiResourceIdentifier(array $array, string $type = null, $id = null) |
||
38 | { |
||
39 | $this->assertArrayHasAll(['data.type', 'data.id'], $array); |
||
40 | |||
41 | if ($type) { |
||
42 | $this->assertEquals(array_get($array, 'data.type'), $type); |
||
0 ignored issues
–
show
It seems like
assertEquals() must be provided by classes using this trait. How about adding it as abstract method to this trait?
This check looks for methods that are used by a trait but not required by it. To illustrate, let’s look at the following code example trait Idable {
public function equalIds(Idable $other) {
return $this->getId() === $other->getId();
}
}
The trait Adding the ![]() |
|||
43 | } |
||
44 | |||
45 | if ($id) { |
||
46 | $this->assertEquals(array_get($array, 'data.id'), $id); |
||
0 ignored issues
–
show
It seems like
assertEquals() must be provided by classes using this trait. How about adding it as abstract method to this trait?
This check looks for methods that are used by a trait but not required by it. To illustrate, let’s look at the following code example trait Idable {
public function equalIds(Idable $other) {
return $this->getId() === $other->getId();
}
}
The trait Adding the ![]() |
|||
47 | } |
||
48 | } |
||
49 | |||
50 | /** |
||
51 | * Assert that an array contains a valid JSON API resource object. |
||
52 | * |
||
53 | * @param array $array |
||
54 | * @param string|null $type |
||
55 | * @param mixed $id |
||
56 | * |
||
57 | * @throws PHPUnit_Framework_AssertionFailedError |
||
58 | */ |
||
59 | public function assertJsonApiResourceObject(array $array, string $type = null, $id = null) |
||
60 | { |
||
61 | $this->assertJsonApiResourceIdentifier($array, $type, $id); |
||
62 | $this->assertInternalType('array', array_get($array, 'data.attributes')); |
||
0 ignored issues
–
show
It seems like
assertInternalType() must be provided by classes using this trait. How about adding it as abstract method to this trait?
This check looks for methods that are used by a trait but not required by it. To illustrate, let’s look at the following code example trait Idable {
public function equalIds(Idable $other) {
return $this->getId() === $other->getId();
}
}
The trait Adding the ![]() |
|||
63 | } |
||
64 | |||
65 | /** |
||
66 | * Assert that an array contains a valid JSON API resource identifier |
||
67 | * object collection. |
||
68 | * |
||
69 | * @param array $array |
||
70 | * @param int $count |
||
71 | * |
||
72 | * @throws PHPUnit_Framework_AssertionFailedError |
||
73 | */ |
||
74 | View Code Duplication | public function assertJsonApiIdentifierCollection(array $array, $count = null) |
|
75 | { |
||
76 | $this->assertArrayHasKey('data', $array, 'No data key for collection'); |
||
0 ignored issues
–
show
It seems like
assertArrayHasKey() must be provided by classes using this trait. How about adding it as abstract method to this trait?
This check looks for methods that are used by a trait but not required by it. To illustrate, let’s look at the following code example trait Idable {
public function equalIds(Idable $other) {
return $this->getId() === $other->getId();
}
}
The trait Adding the ![]() |
|||
77 | |||
78 | foreach ($array['data'] as $identifier) { |
||
79 | $this->assertArrayHasAll(['type', 'id'], (array) $identifier); |
||
80 | } |
||
81 | |||
82 | $this->assertCount($count, $array['data'], 'Incorrect object count returned in collection'); |
||
0 ignored issues
–
show
It seems like
assertCount() must be provided by classes using this trait. How about adding it as abstract method to this trait?
This check looks for methods that are used by a trait but not required by it. To illustrate, let’s look at the following code example trait Idable {
public function equalIds(Idable $other) {
return $this->getId() === $other->getId();
}
}
The trait Adding the ![]() |
|||
83 | } |
||
84 | |||
85 | /** |
||
86 | * Assert that an array contains a valid JSON API resource object collection. |
||
87 | * |
||
88 | * @param array $array |
||
89 | * @param int $count |
||
90 | * |
||
91 | * @throws PHPUnit_Framework_AssertionFailedError |
||
92 | */ |
||
93 | View Code Duplication | public function assertJsonApiObjectCollection(array $array, $count = null) |
|
94 | { |
||
95 | $this->assertArrayHasKey('data', $array, 'No data key for collection'); |
||
0 ignored issues
–
show
It seems like
assertArrayHasKey() must be provided by classes using this trait. How about adding it as abstract method to this trait?
This check looks for methods that are used by a trait but not required by it. To illustrate, let’s look at the following code example trait Idable {
public function equalIds(Idable $other) {
return $this->getId() === $other->getId();
}
}
The trait Adding the ![]() |
|||
96 | |||
97 | foreach ($array['data'] as $object) { |
||
98 | $this->assertArrayHasAll(['type', 'id', 'attributes'], (array) $object); |
||
99 | } |
||
100 | |||
101 | if (!is_null($count)) { |
||
102 | $this->assertCount($count, $array['data'], 'Incorrect object count returned in collection'); |
||
0 ignored issues
–
show
It seems like
assertCount() must be provided by classes using this trait. How about adding it as abstract method to this trait?
This check looks for methods that are used by a trait but not required by it. To illustrate, let’s look at the following code example trait Idable {
public function equalIds(Idable $other) {
return $this->getId() === $other->getId();
}
}
The trait Adding the ![]() |
|||
103 | } |
||
104 | } |
||
105 | } |
||
106 |
This check looks for methods that are used by a trait but not required by it.
To illustrate, let’s look at the following code example
The trait
Idable
provides a methodequalsId
that in turn relies on the methodgetId()
. If this method does not exist on a class mixing in this trait, the method will fail.Adding the
getId()
as an abstract method to the trait will make sure it is available.