Skip to content

Commit

Permalink
wip
Browse files Browse the repository at this point in the history
  • Loading branch information
timacdonald committed Oct 12, 2023
1 parent 56d4180 commit dbd94d6
Show file tree
Hide file tree
Showing 7 changed files with 15 additions and 52 deletions.
4 changes: 2 additions & 2 deletions src/Concerns/Implementation.php
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
namespace TiMacDonald\JsonApi\Concerns;

use Illuminate\Http\Request;
use TiMacDonald\JsonApi\JsonApiServerImplementation;
use TiMacDonald\JsonApi\ServerImplementation;

trait Implementation
{
Expand Down Expand Up @@ -44,6 +44,6 @@ public static function resolveServerImplementationNormally()
*/
public static function serverImplementationResolver()
{
return self::$serverImplementationResolver ?? fn (Request $request): JsonApiServerImplementation => new JsonApiServerImplementation('1.0');
return self::$serverImplementationResolver ?? fn (Request $request): ServerImplementation => new ServerImplementation('1.0');
}
}
17 changes: 2 additions & 15 deletions src/Link.php
Original file line number Diff line number Diff line change
Expand Up @@ -16,36 +16,25 @@ final class Link implements JsonSerializable
*/
public string $key;

/**
* @internal
*/
private string $href;

/**
* @api
*
* @param array<string, mixed> $meta
* @return self
*/
public static function self(string $href, array $meta = [])
public static function self(string $href, array $meta = []): self
{
return new self('self', $href, $meta);
}

/**
* @api
*
* @param array<string, mixed> $meta
* @return self
*/
public static function related(string $href, array $meta = [])
public static function related(string $href, array $meta = []): self
{
return new self('related', $href, $meta);
}

/**
* @api
*
* @param array<string, mixed> $meta
*/
public function __construct(string $key, string $href, array $meta = [])
Expand All @@ -58,8 +47,6 @@ public function __construct(string $key, string $href, array $meta = [])
}

/**
* @internal
*
* @return array{href: string, meta?: stdClass}
*/
public function jsonSerialize(): array
Expand Down
16 changes: 2 additions & 14 deletions src/RelationshipObject.php
Original file line number Diff line number Diff line change
Expand Up @@ -13,40 +13,30 @@ final class RelationshipObject implements JsonSerializable
use Concerns\Meta;

/**
* @internal
*
* @var ResourceIdentifier|null|array<int, ResourceIdentifier>
*/
private ResourceIdentifier|array|null $data;

/**
* @api
*
* @param array<int, Link> $links
* @param array<string, mixed> $meta
* @return self
*/
public static function toOne(ResourceIdentifier|null $data, array $links = [], array $meta = [])
public static function toOne(ResourceIdentifier|null $data, array $links = [], array $meta = []): self
{
return new self($data, $links, $meta);
}

/**
* @api
*
* @param array<int, ResourceIdentifier> $data
* @param array<int, Link> $links
* @param array<string, mixed> $meta
* @return self
*/
public static function toMany(array $data, array $links = [], array $meta = [])
public static function toMany(array $data, array $links = [], array $meta = []): self
{
return new self($data, $links, $meta);
}

/**
* @internal
*
* @param ResourceIdentifier|null|array<int, ResourceIdentifier> $data
* @param array<int, Link> $links
* @param array<string, mixed> $meta
Expand All @@ -62,8 +52,6 @@ private function __construct(ResourceIdentifier|array|null $data, array $links =


/**
* @internal
*
* @return array{data: ResourceIdentifier|null|array<int, ResourceIdentifier>, meta?: stdClass, links?: stdClass}
*/
public function jsonSerialize(): array
Expand Down
10 changes: 0 additions & 10 deletions src/ResourceIdentifier.php
Original file line number Diff line number Diff line change
Expand Up @@ -11,19 +11,11 @@ final class ResourceIdentifier implements JsonSerializable
{
use Concerns\Meta;

/**
* @internal
*/
private string $type;

/**
* @internal
*/
private string $id;

/**
* @api
*
* @param array<string, mixed> $meta
*/
public function __construct(string $type, string $id, array $meta = [])
Expand All @@ -36,8 +28,6 @@ public function __construct(string $type, string $id, array $meta = [])
}

/**
* @internal
*
* @return array{type: string, id: string, meta?: stdClass}
*/
public function jsonSerialize(): array
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@
use JsonSerializable;
use stdClass;

final class JsonApiServerImplementation implements JsonSerializable
final class ServerImplementation implements JsonSerializable
{
use Concerns\Meta;

Expand All @@ -24,8 +24,6 @@ public function __construct(string $version, array $meta = [])
}

/**
* @internal
*
* @return array{version: string, meta?: stdClass}
*/
public function jsonSerialize(): array
Expand Down
8 changes: 4 additions & 4 deletions tests/Feature/JsonApiTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,7 @@
use Tests\TestCase;
use TiMacDonald\JsonApi\JsonApiResource;
use TiMacDonald\JsonApi\JsonApiResourceCollection;
use TiMacDonald\JsonApi\JsonApiServerImplementation;
use TiMacDonald\JsonApi\ServerImplementation;
use TiMacDonald\JsonApi\Link;
use TiMacDonald\JsonApi\RelationshipObject;
use TiMacDonald\JsonApi\ResourceIdentifier;
Expand Down Expand Up @@ -253,7 +253,7 @@ public function testItExcludesEmptyLinksMeta(): void

public function testItExcludesEmptyImplementationMeta(): void
{
$implementation = new JsonApiServerImplementation('1.5', []);
$implementation = new ServerImplementation('1.5', []);

$json = json_encode($implementation);

Expand All @@ -262,7 +262,7 @@ public function testItExcludesEmptyImplementationMeta(): void

public function testItCanSpecifyAnImplementation(): void
{
BasicJsonApiResource::resolveServerImplementationUsing(fn () => new JsonApiServerImplementation('1.4.3', [
BasicJsonApiResource::resolveServerImplementationUsing(fn () => new ServerImplementation('1.4.3', [
'secure' => true,
]));
$user = new BasicModel([
Expand Down Expand Up @@ -309,7 +309,7 @@ public function testItCanPopulateAllTheMetasAndAllTheLinks()
// 2. Single resource ✅
// 3. Empty collection of resources.
// 4. Collection of resources.
JsonApiResource::resolveServerImplementationUsing(fn () => (new JsonApiServerImplementation('1.0'))->withMeta([
JsonApiResource::resolveServerImplementationUsing(fn () => (new ServerImplementation('1.0'))->withMeta([
'implementation' => 'meta',
]));
$user = (new BasicModel([
Expand Down
8 changes: 4 additions & 4 deletions tests/Unit/ServerApiImplementationTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -5,13 +5,13 @@
namespace Tests\Unit;

use PHPUnit\Framework\TestCase;
use TiMacDonald\JsonApi\JsonApiServerImplementation;
use TiMacDonald\JsonApi\ServerImplementation;

class ServerApiImplementationTest extends TestCase
{
public function testItSerializes(): void
{
$instance = (new JsonApiServerImplementation('5.0', [
$instance = (new ServerImplementation('5.0', [
'expected' => 'meta',
]))->withMeta([
'more' => 'meta',
Expand All @@ -24,7 +24,7 @@ public function testItSerializes(): void

public function testEmptyMetaIsExcluded(): void
{
$instance = new JsonApiServerImplementation('5.0', []);
$instance = new ServerImplementation('5.0', []);

$json = json_encode($instance);

Expand All @@ -33,7 +33,7 @@ public function testEmptyMetaIsExcluded(): void

public function testMissingMetaIsExcluded(): void
{
$instance = new JsonApiServerImplementation('5.0');
$instance = new ServerImplementation('5.0');

$json = json_encode($instance);

Expand Down

0 comments on commit dbd94d6

Please sign in to comment.