Fix tests

This commit is contained in:
Toby Zerner 2022-01-03 14:22:20 +11:00
parent 4f84fede67
commit a9a8bb84aa
5 changed files with 24 additions and 56 deletions

View File

@ -11,6 +11,7 @@
namespace Tobyz\Tests\JsonApiServer\feature;
use Prophecy\Argument;
use Prophecy\PhpUnit\ProphecyTrait;
use Tobyz\JsonApiServer\Adapter\AdapterInterface;
use Tobyz\JsonApiServer\Exception\ForbiddenException;
@ -125,6 +126,8 @@ class CreateTest extends AbstractTestCase
$adapter->model()->willReturn($createdModel = (object) []);
$adapter->save($createdModel)->shouldBeCalled();
$adapter->getId($createdModel)->willReturn('1');
$adapter->query()->shouldBeCalled();
$adapter->find(Argument::any(), '1')->willReturn($createdModel);
$this->api->resourceType('users', $adapter->reveal(), function (Type $type) {
$type->creatable();
@ -141,6 +144,8 @@ class CreateTest extends AbstractTestCase
$adapter->model()->shouldNotBeCalled();
$adapter->save($createdModel)->shouldBeCalled();
$adapter->getId($createdModel)->willReturn('1');
$adapter->query()->shouldBeCalled();
$adapter->find(Argument::any(), '1')->willReturn($createdModel);
$this->api->resourceType('users', $adapter->reveal(), function (Type $type) use ($createdModel) {
$type->creatable();
@ -161,6 +166,8 @@ class CreateTest extends AbstractTestCase
$adapter->model()->willReturn($createdModel = (object) []);
$adapter->save($createdModel)->shouldNotBeCalled();
$adapter->getId($createdModel)->willReturn('1');
$adapter->query()->shouldBeCalled();
$adapter->find(Argument::any(), '1')->willReturn($createdModel);
$this->api->resourceType('users', $adapter->reveal(), function (Type $type) use ($createdModel, &$called) {
$type->creatable();
@ -184,6 +191,8 @@ class CreateTest extends AbstractTestCase
$adapter = $this->prophesize(AdapterInterface::class);
$adapter->model()->willReturn($createdModel = (object) []);
$adapter->getId($createdModel)->willReturn('1');
$adapter->query()->shouldBeCalled();
$adapter->find(Argument::any(), '1')->willReturn($createdModel);
$this->api->resourceType('users', $adapter->reveal(), function (Type $type) use ($adapter, $createdModel, &$called) {
$type->creatable();

View File

@ -103,7 +103,7 @@ class DeleteTest extends AbstractTestCase
$called = false;
$adapter = $this->prophesize(AdapterInterface::class);
$adapter->newQuery()->willReturn($query = (object) []);
$adapter->query()->willReturn($query = (object) []);
$adapter->find($query, '1')->willReturn($deletingModel = (object) []);
$adapter->delete($deletingModel);
@ -123,7 +123,7 @@ class DeleteTest extends AbstractTestCase
public function test_deleting_a_resource_calls_the_delete_adapter_method()
{
$adapter = $this->prophesize(AdapterInterface::class);
$adapter->newQuery()->willReturn($query = (object) []);
$adapter->query()->willReturn($query = (object) []);
$adapter->find($query, '1')->willReturn($model = (object) []);
$adapter->delete($model)->shouldBeCalled();
@ -139,7 +139,7 @@ class DeleteTest extends AbstractTestCase
$called = false;
$adapter = $this->prophesize(AdapterInterface::class);
$adapter->newQuery()->willReturn($query = (object) []);
$adapter->query()->willReturn($query = (object) []);
$adapter->find($query, '1')->willReturn($deletingModel = (object) []);
$adapter->delete($deletingModel)->shouldNotBeCalled();
@ -162,7 +162,7 @@ class DeleteTest extends AbstractTestCase
$called = 0;
$adapter = $this->prophesize(AdapterInterface::class);
$adapter->newQuery()->willReturn($query = (object) []);
$adapter->query()->willReturn($query = (object) []);
$adapter->find($query, '1')->willReturn($deletingModel = (object) []);
$adapter->delete($deletingModel)->shouldBeCalled();

View File

@ -85,7 +85,7 @@ class FieldGettersTest extends AbstractTestCase
$type->hasOne('animal')->withLinkage();
});
$this->api->resourceType('animals', new MockAdapter);
$this->api->resourceType('animals', new MockAdapter());
$response = $this->api->handle(
$this->buildRequest('GET', '/users/1')
@ -100,12 +100,12 @@ class FieldGettersTest extends AbstractTestCase
{
$this->api->resourceType('users', $this->adapter, function (Type $type) {
$type->hasOne('animal')->withLinkage()
->get(function ($model, Context $context) {
->get(function ($model, bool $linkageOnly, Context $context) {
return (object) ['id' => '2'];
});
});
$this->api->resourceType('animals', new MockAdapter);
$this->api->resourceType('animals', new MockAdapter());
$response = $this->api->handle(
$this->buildRequest('GET', '/users/1')
@ -122,7 +122,7 @@ class FieldGettersTest extends AbstractTestCase
$type->hasMany('animals')->withLinkage();
});
$this->api->resourceType('animals', new MockAdapter);
$this->api->resourceType('animals', new MockAdapter());
$response = $this->api->handle(
$this->buildRequest('GET', '/users/1')
@ -138,7 +138,7 @@ class FieldGettersTest extends AbstractTestCase
{
$this->api->resourceType('users', $this->adapter, function (Type $type) {
$type->hasMany('animals')->withLinkage()
->get(function ($model, Context $context) {
->get(function ($model, bool $linkageOnly, Context $context) {
return [
(object) ['id' => '2'],
(object) ['id' => '3']
@ -146,7 +146,7 @@ class FieldGettersTest extends AbstractTestCase
});
});
$this->api->resourceType('animals', new MockAdapter);
$this->api->resourceType('animals', new MockAdapter());
$response = $this->api->handle(
$this->buildRequest('GET', '/users/1')

View File

@ -40,7 +40,7 @@ class FieldVisibilityTest extends AbstractTestCase
public function test_fields_are_visible_by_default()
{
$this->api->resourceType('users', new MockAdapter, function (Type $type) {
$this->api->resourceType('users', new MockAdapter(), function (Type $type) {
$type->attribute('visible');
});
@ -58,7 +58,7 @@ class FieldVisibilityTest extends AbstractTestCase
{
$this->markTestIncomplete();
$this->api->resourceType('users', new MockAdapter, function (Type $type) {
$this->api->resourceType('users', new MockAdapter(), function (Type $type) {
$type->attribute('visibleAttribute')->visible();
$type->hasOne('visibleHasOne')->visible();
$type->hasMany('visibleHasMany')->visible();
@ -81,7 +81,7 @@ class FieldVisibilityTest extends AbstractTestCase
{
$this->markTestIncomplete();
$this->api->resourceType('users', new MockAdapter, function (Type $type) {
$this->api->resourceType('users', new MockAdapter(), function (Type $type) {
$type->attribute('visibleAttribute')
->visible(function () { return true; });
@ -152,7 +152,7 @@ class FieldVisibilityTest extends AbstractTestCase
{
$this->markTestIncomplete();
$this->api->resourceType('users', new MockAdapter, function (Type $type) {
$this->api->resourceType('users', new MockAdapter(), function (Type $type) {
$type->attribute('hiddenAttribute')->hidden();
$type->hasOne('hiddenHasOne')->hidden();
$type->hasMany('hiddenHasMany')->hidden();
@ -175,7 +175,7 @@ class FieldVisibilityTest extends AbstractTestCase
{
$this->markTestIncomplete();
$this->api->resourceType('users', new MockAdapter, function (Type $type) {
$this->api->resourceType('users', new MockAdapter(), function (Type $type) {
$type->attribute('visibleAttribute')
->hidden(function () { return false; });

View File

@ -11,7 +11,6 @@
namespace Tobyz\Tests\JsonApiServer\feature;
use Psr\Http\Message\ServerRequestInterface;
use Tobyz\JsonApiServer\JsonApi;
use Tobyz\JsonApiServer\Context;
use Tobyz\JsonApiServer\Schema\Type;
@ -88,44 +87,4 @@ class ScopesTest extends AbstractTestCase
$this->assertTrue($this->scopeWasCalled);
}
public function test_scopes_are_applied_to_related_resources()
{
$this->api->resourceType('pets', new MockAdapter, function (Type $type) {
$type->hasOne('owner')
->type('users')
->includable();
});
$this->api->handle(
$this->buildRequest('GET', '/pets/1')
->withQueryParams(['include' => 'owner'])
);
$this->assertTrue($this->scopeWasCalled);
}
public function test_scopes_are_applied_to_polymorphic_related_resources()
{
$this->api->resourceType('pets', new MockAdapter, function (Type $type) {
$type->hasOne('owner')
->polymorphic(['users', 'organisations'])
->includable();
});
$organisationScopeWasCalled = false;
$this->api->resourceType('organisations', new MockAdapter, function (Type $type) use (&$organisationScopeWasCalled) {
$type->scope(function ($query, Context $context) use (&$organisationScopeWasCalled) {
$organisationScopeWasCalled = true;
});
});
$this->api->handle(
$this->buildRequest('GET', '/pets/1')
->withQueryParams(['include' => 'owner'])
);
$this->assertTrue($this->scopeWasCalled);
$this->assertTrue($organisationScopeWasCalled);
}
}