Skip to content

Commit 5705bce

Browse files
committed
Add initial ResourceSerializer tests
1 parent b083b15 commit 5705bce

File tree

1 file changed

+65
-0
lines changed

1 file changed

+65
-0
lines changed
Lines changed: 65 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,65 @@
1+
<?php
2+
3+
namespace Huntie\JsonApi\Tests\Serializers;
4+
5+
use Huntie\JsonApi\Serializers\ResourceSerializer;
6+
use Huntie\JsonApi\Tests\TestCase;
7+
use Huntie\JsonApi\Tests\Fixtures\Models\User;
8+
9+
class ResourceSerializerTest extends TestCase
10+
{
11+
/**
12+
* Test the returned primary resource object type.
13+
*/
14+
public function testPrimaryResourceType()
15+
{
16+
$serializer = new ResourceSerializer(factory(User::class)->make());
17+
$resource = $serializer->toResourceIdentifier();
18+
19+
$this->assertEquals('users', $resource['type']);
20+
}
21+
22+
/**
23+
* Test the output of toResourceIdentifier.
24+
*/
25+
public function testToResourceIdentifier()
26+
{
27+
$serializer = new ResourceSerializer(factory(User::class)->make());
28+
$resource = $serializer->toResourceIdentifier();
29+
30+
$this->assertInternalType('array', $resource);
31+
$this->assertCount(2, $resource);
32+
$this->assertArrayHasKey('type', $resource);
33+
$this->assertArrayHasKey('id', $resource);
34+
}
35+
36+
/**
37+
* Test returned attributes in output of toBaseResourceObject.
38+
*/
39+
public function testToBaseResourceObject()
40+
{
41+
$user = factory(User::class)->make();
42+
$serializer = new ResourceSerializer($user);
43+
$resource = $serializer->toBaseResourceObject();
44+
45+
$this->assertInternalType('array', $resource);
46+
$this->assertArrayHasKey('attributes', $resource);
47+
$this->assertInternalType('array', $resource['attributes']);
48+
$this->assertArraySubset($resource['attributes'], $user->getAttributes());
49+
$this->assertArrayNotHasKey('id', $resource['attributes'], 'ID incorrectly included in attribute list');
50+
$this->assertArrayNotHasKey('password', $resource['attributes'], 'Hidden model field incorrectly included');
51+
}
52+
53+
/**
54+
* Test returning a subset of attributes.
55+
*/
56+
public function testFieldSubset()
57+
{
58+
$user = factory(User::class)->make();
59+
$serializer = new ResourceSerializer($user, ['users' => ['name']]);
60+
$resource = $serializer->toBaseResourceObject();
61+
62+
$this->assertArrayHasKey('name', $resource['attributes']);
63+
$this->assertArrayNotHasKey('email', $resource['attributes']);
64+
}
65+
}

0 commit comments

Comments
 (0)