Skip to content

Commit 73ada10

Browse files
committed
refactor(api): change listRegisteredResources to instance method
1 parent 05f2f63 commit 73ada10

File tree

4 files changed

+23
-5
lines changed

4 files changed

+23
-5
lines changed

src/Classes/ApiManager.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,7 @@ protected function loadResources()
5353
{
5454
Resource::syncAll();
5555

56-
$resources = Resource::all()->mapWithKeys(function(Resource $resource) {
56+
$resources = Resource::all()->mapWithKeys(function(Resource $resource): array {
5757
$resourceObj = (object)[
5858
'endpoint' => $resource->endpoint,
5959
'controller' => $resource->controller,

src/Models/Resource.php

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -89,7 +89,7 @@ public function getControllerAttribute()
8989

9090
public function getAvailableActions(): array
9191
{
92-
$registeredResource = array_get(static::listRegisteredResources(), $this->endpoint, []);
92+
$registeredResource = array_get((new static)->listRegisteredResources(), $this->endpoint, []);
9393
$registeredActions = array_get($registeredResource, 'options.actions', []);
9494
$dbActions = (array)array_get($this->meta, 'actions', []);
9595

@@ -157,7 +157,7 @@ public static function getResources()
157157
*/
158158
public static function listResources()
159159
{
160-
$registeredResources = static::listRegisteredResources();
160+
$registeredResources = (new static)->listRegisteredResources();
161161
$dbResources = static::all()->keyBy('endpoint')->all();
162162
$resources = $registeredResources + $dbResources;
163163
ksort($resources);
@@ -195,7 +195,7 @@ protected function processOptions($definition): array
195195
* Returns a list of the registered resources.
196196
* @return array
197197
*/
198-
public static function listRegisteredResources()
198+
public function listRegisteredResources()
199199
{
200200
if (static::$registeredResources === null) {
201201
(new static)->loadRegisteredResources();

tests/ExtensionTest.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@
1414
use Mockery;
1515

1616
it('loads registered api resources', function(): void {
17-
$resources = Resource::listRegisteredResources();
17+
$resources = (new Resource)->listRegisteredResources();
1818

1919
expect($resources)
2020
->toHaveKey('categories')

tests/Models/ResourceTest.php

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,10 @@
44

55
namespace Igniter\Api\Tests\Models;
66

7+
use Igniter\Api\ApiResources\Categories;
78
use Igniter\Api\Models\Resource;
89
use Igniter\Flame\Database\Traits\HasPermalink;
10+
use Igniter\System\Classes\ExtensionManager;
911
use Mockery;
1012

1113
it('returns default action definition when no meta options are set', function(): void {
@@ -41,6 +43,22 @@ public function testGet()
4143
});
4244

4345
it('syncs all resources correctly', function(): void {
46+
app()->instance(ExtensionManager::class, mock(ExtensionManager::class, function($mock) {
47+
$mock->shouldReceive('getRegistrationMethodValues')
48+
->with('registerApiResources')
49+
->andReturn([
50+
'igniter.custom' => [
51+
'custom' => [
52+
'controller' => Categories::class,
53+
'name' => 'Custom',
54+
'description' => 'An API resource for categories',
55+
'actions' => [
56+
'index', 'show:all', 'store:admin', 'update:admin', 'destroy:admin',
57+
],
58+
],
59+
],
60+
]);
61+
}));
4462
Resource::factory()->create(['endpoint' => 'endpoint1', 'is_custom' => true]);
4563
Resource::factory()->create(['endpoint' => 'endpoint2']);
4664
Resource::clearInternalCache();

0 commit comments

Comments
 (0)