Skip to content
This repository was archived by the owner on Jan 2, 2023. It is now read-only.

Commit d07df7c

Browse files
committed
Merge pull request #34 from hanneskaeufler/hk-kickstart-test-suite
Hk kickstart test suite
2 parents 95c0496 + f353661 commit d07df7c

File tree

5 files changed

+112
-4
lines changed

5 files changed

+112
-4
lines changed

src/Document.php

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,8 @@ public function addIncluded($link)
3232

3333
foreach ($resources as $k => $resource) {
3434
foreach ($this->included as $includedResource) {
35-
if ($includedResource->getType() === $resource->getType() && $includedResource->getId() === $resource->getId()) {
35+
if ($includedResource->getType() === $resource->getType()
36+
&& $includedResource->getId() === $resource->getId()) {
3637
$includedResource->merge($resource);
3738
unset($resources[$k]);
3839
break;
@@ -125,7 +126,7 @@ public function __toString()
125126
{
126127
return json_encode($this->toArray());
127128
}
128-
129+
129130
public function jsonSerialize()
130131
{
131132
return $this->toArray();

src/SerializerAbstract.php

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -116,8 +116,7 @@ public function resource($data)
116116
);
117117
}
118118

119-
if ($method && $element)
120-
{
119+
if ($method && $element) {
121120
if (! ($element instanceof Relationship)) {
122121
$element = new Relationship($element);
123122
}

tests/CriteriaTest.php

Lines changed: 62 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,62 @@
1+
<?php namespace Tobscure\JsonApi;
2+
3+
use Tobscure\JsonApi\Criteria;
4+
5+
class CriteriaTest extends \PHPUnit_Framework_TestCase
6+
{
7+
public function testGetIncludeReturnsArrayOfIncludes()
8+
{
9+
$criteria = new Criteria(['include' => 'posts,images']);
10+
11+
$this->assertEquals(['posts', 'images'], $criteria->getInclude());
12+
}
13+
14+
public function testGetSortReturnsArrayOfFieldToSortDirection()
15+
{
16+
$criteria = new Criteria(['sort' => '+firstname']);
17+
18+
$this->assertEquals(['firstname' => 'asc'], $criteria->getSort());
19+
}
20+
21+
public function testGetSortSupportsMultipleSortedFieldsSeparatedByComma()
22+
{
23+
$criteria = new Criteria(['sort' => '+firstname,-lastname']);
24+
25+
$this->assertEquals(['firstname' => 'asc', 'lastname' => 'desc'], $criteria->getSort());
26+
}
27+
28+
public function testGetSortIgnoresInvalidDirections()
29+
{
30+
$criteria = new Criteria(['sort' => '*firstname']);
31+
32+
$this->assertEmpty($criteria->getSort());
33+
}
34+
35+
public function testGetSortDefaultsToEmptyArray()
36+
{
37+
$criteria = new Criteria([]);
38+
39+
$this->assertEmpty($criteria->getSort());
40+
}
41+
42+
public function testGetOffsetParsesThePageOffset()
43+
{
44+
$criteria = new Criteria(['page' => ['offset' => 10]]);
45+
46+
$this->assertEquals(10, $criteria->getOffset());
47+
}
48+
49+
public function testGetOffsetIsAtLeastZero()
50+
{
51+
$criteria = new Criteria(['page' => ['offset' => -5]]);
52+
53+
$this->assertEquals(0, $criteria->getOffset());
54+
}
55+
56+
public function testGetLimitParsesThePageLimit()
57+
{
58+
$criteria = new Criteria(['page' => ['limit' => 100]]);
59+
60+
$this->assertEquals(100, $criteria->getLimit());
61+
}
62+
}

tests/DocumentTest.php

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
<?php namespace Tobscure\JsonApi;
2+
3+
use Tobscure\JsonApi\Document;
4+
use Tobscure\JsonApi\Elements\Resource;
5+
6+
class DocumentTest extends \PHPUnit_Framework_TestCase
7+
{
8+
public function testToArrayIncludesTheResourcesRepresentation()
9+
{
10+
$resource = new Resource('post', 1);
11+
$document = new Document();
12+
$document->setData($resource);
13+
14+
$this->assertEquals(['data' => $resource->toArray()], $document->toArray());
15+
}
16+
17+
public function testItCanBeSerializedToJson()
18+
{
19+
$this->assertEquals('[]', (string) new Document());
20+
}
21+
}

tests/Elements/CollectionTest.php

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
<?php namespace Tobscure\JsonApi\Elements;
2+
3+
use Tobscure\JsonApi\Elements\Collection;
4+
use Tobscure\JsonApi\Elements\Resource;
5+
6+
class CollectionTest extends \PHPUnit_Framework_TestCase
7+
{
8+
public function testToArrayReturnsArrayOfResources()
9+
{
10+
$post1 = new Resource('post', 1);
11+
$post2 = new Resource('post', 2);
12+
$collection = new Collection('post', [$post1, $post2]);
13+
14+
$this->assertEquals([$post1->toArray(), $post2->toArray()], $collection->toArray());
15+
}
16+
17+
public function testGetIdReturnsArrayOfResourceIds()
18+
{
19+
$post1 = new Resource('post', 1);
20+
$post2 = new Resource('post', 2);
21+
$collection = new Collection('post', [$post1, $post2]);
22+
23+
$this->assertEquals([1, 2], $collection->getId());
24+
}
25+
}

0 commit comments

Comments
 (0)