Skip to content

Commit fb5af36

Browse files
Support namespaced Resources + suffix name (#342)
1 parent 0061d0e commit fb5af36

File tree

11 files changed

+31
-44
lines changed

11 files changed

+31
-44
lines changed

src/Generators/ControllerGenerator.php

Lines changed: 1 addition & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -139,16 +139,8 @@ protected function buildMethods(Controller $controller)
139139
$body .= self::INDENT.$statement->output().PHP_EOL;
140140
} elseif ($statement instanceof ResourceStatement) {
141141
$fqcn = config('blueprint.namespace').'\\Http\\Resources\\'.($controller->namespace() ? $controller->namespace().'\\' : '').$statement->name();
142-
143142
$method = str_replace('* @return \\Illuminate\\Http\\Response', '* @return \\'.$fqcn, $method);
144-
145-
$import = $fqcn;
146-
if (!$statement->collection()) {
147-
$import .= ' as '.$statement->name().'Resource';
148-
}
149-
150-
$this->addImport($controller, $import);
151-
143+
$this->addImport($controller, $fqcn);
152144
$body .= self::INDENT.$statement->output().PHP_EOL;
153145
} elseif ($statement instanceof RedirectStatement) {
154146
$body .= self::INDENT.$statement->output().PHP_EOL;

src/Models/Statements/ResourceStatement.php

Lines changed: 2 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -31,10 +31,10 @@ public function __construct(string $reference, bool $collection = false, bool $p
3131
public function name(): string
3232
{
3333
if ($this->collection()) {
34-
return Str::studly(Str::singular($this->reference)) . 'Collection';
34+
return Str::studly(Str::singular($this->reference)) . 'Collection';
3535
}
3636

37-
return Str::studly(Str::singular($this->reference));
37+
return Str::studly(Str::singular($this->reference)) . 'Resource';
3838
}
3939

4040
public function reference(): string
@@ -55,11 +55,6 @@ public function paginate(): bool
5555
public function output(): string
5656
{
5757
$code = 'return new ' . $this->name();
58-
59-
if (!$this->collection()) {
60-
$code .= 'Resource';
61-
}
62-
6358
$code .= '($' . $this->reference();
6459

6560
if ($this->paginate()) {

tests/Feature/Generator/Statements/ResourceGeneratorTest.php

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -83,10 +83,10 @@ public function output_writes_resources_for_render_statements()
8383

8484
$this->files->expects('exists')
8585
->twice()
86-
->with('app/Http/Resources/User.php')
86+
->with('app/Http/Resources/UserResource.php')
8787
->andReturns(false, true);
8888
$this->files->expects('put')
89-
->with('app/Http/Resources/User.php', $this->fixture('resources/user.php'));
89+
->with('app/Http/Resources/UserResource.php', $this->fixture('resources/user.php'));
9090

9191
$this->files->expects('exists')
9292
->twice()
@@ -98,7 +98,7 @@ public function output_writes_resources_for_render_statements()
9898
$tokens = $this->blueprint->parse($this->fixture('drafts/resource-statements.yaml'));
9999
$tree = $this->blueprint->analyze($tokens);
100100

101-
$this->assertEquals(['created' => ['app/Http/Resources/UserCollection.php', 'app/Http/Resources/User.php']], $this->subject->output($tree));
101+
$this->assertEquals(['created' => ['app/Http/Resources/UserCollection.php', 'app/Http/Resources/UserResource.php']], $this->subject->output($tree));
102102
}
103103

104104
/**
@@ -118,10 +118,10 @@ public function output_writes_namespaced_classes()
118118

119119
$this->files->expects('exists')
120120
->times(3)
121-
->with('app/Http/Resources/Api/Certificate.php')
121+
->with('app/Http/Resources/Api/CertificateResource.php')
122122
->andReturns(false, true, true);
123123
$this->files->expects('put')
124-
->with('app/Http/Resources/Api/Certificate.php', $this->fixture('resources/certificate.php'));
124+
->with('app/Http/Resources/Api/CertificateResource.php', $this->fixture('resources/certificate.php'));
125125

126126
$this->files->expects('exists')
127127
->with('app/Http/Resources/Api/CertificateCollection.php')
@@ -133,7 +133,7 @@ public function output_writes_namespaced_classes()
133133
$tree = $this->blueprint->analyze($tokens);
134134

135135
$this->assertEquals([
136-
'created' => ['app/Http/Resources/Api/CertificateCollection.php', 'app/Http/Resources/Api/Certificate.php'],
136+
'created' => ['app/Http/Resources/Api/CertificateCollection.php', 'app/Http/Resources/Api/CertificateResource.php'],
137137
], $this->subject->output($tree));
138138
}
139139
}

tests/Feature/Lexers/StatementLexerTest.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -663,7 +663,7 @@ public function it_returns_a_resource_statement()
663663
$this->assertCount(1, $actual);
664664
$this->assertInstanceOf(ResourceStatement::class, $actual[0]);
665665

666-
$this->assertEquals('User', $actual[0]->name());
666+
$this->assertEquals('UserResource', $actual[0]->name());
667667
$this->assertEquals('user', $actual[0]->reference());
668668
$this->assertFalse($actual[0]->collection());
669669
$this->assertFalse($actual[0]->paginate());

tests/fixtures/controllers/api-routes-example.php

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,8 @@
66
use App\Http\Controllers\Controller;
77
use App\Http\Requests\Api\CertificateStoreRequest;
88
use App\Http\Requests\Api\CertificateUpdateRequest;
9-
use App\Http\Resources\Api\Certificate as CertificateResource;
109
use App\Http\Resources\Api\CertificateCollection;
10+
use App\Http\Resources\Api\CertificateResource;
1111
use Illuminate\Http\Request;
1212

1313
class CertificateController extends Controller
@@ -25,7 +25,7 @@ public function index(Request $request)
2525

2626
/**
2727
* @param \App\Http\Requests\Api\CertificateStoreRequest $request
28-
* @return \App\Http\Resources\Api\Certificate
28+
* @return \App\Http\Resources\Api\CertificateResource
2929
*/
3030
public function store(CertificateStoreRequest $request)
3131
{
@@ -37,7 +37,7 @@ public function store(CertificateStoreRequest $request)
3737
/**
3838
* @param \Illuminate\Http\Request $request
3939
* @param \App\Certificate $certificate
40-
* @return \App\Http\Resources\Api\Certificate
40+
* @return \App\Http\Resources\Api\CertificateResource
4141
*/
4242
public function show(Request $request, Certificate $certificate)
4343
{
@@ -47,7 +47,7 @@ public function show(Request $request, Certificate $certificate)
4747
/**
4848
* @param \App\Http\Requests\Api\CertificateUpdateRequest $request
4949
* @param \App\Certificate $certificate
50-
* @return \App\Http\Resources\Api\Certificate
50+
* @return \App\Http\Resources\Api\CertificateResource
5151
*/
5252
public function update(CertificateUpdateRequest $request, Certificate $certificate)
5353
{

tests/fixtures/controllers/certificate-controller.php

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -5,8 +5,8 @@
55
use App\Certificate;
66
use App\Http\Requests\CertificateStoreRequest;
77
use App\Http\Requests\CertificateUpdateRequest;
8-
use App\Http\Resources\Certificate as CertificateResource;
98
use App\Http\Resources\CertificateCollection;
9+
use App\Http\Resources\CertificateResource;
1010
use Illuminate\Http\Request;
1111

1212
class CertificateController extends Controller
@@ -24,7 +24,7 @@ public function index(Request $request)
2424

2525
/**
2626
* @param \App\Http\Requests\CertificateStoreRequest $request
27-
* @return \App\Http\Resources\Certificate
27+
* @return \App\Http\Resources\CertificateResource
2828
*/
2929
public function store(CertificateStoreRequest $request)
3030
{
@@ -36,7 +36,7 @@ public function store(CertificateStoreRequest $request)
3636
/**
3737
* @param \Illuminate\Http\Request $request
3838
* @param \App\Certificate $certificate
39-
* @return \App\Http\Resources\Certificate
39+
* @return \App\Http\Resources\CertificateResource
4040
*/
4141
public function show(Request $request, Certificate $certificate)
4242
{
@@ -46,7 +46,7 @@ public function show(Request $request, Certificate $certificate)
4646
/**
4747
* @param \App\Http\Requests\CertificateUpdateRequest $request
4848
* @param \App\Certificate $certificate
49-
* @return \App\Http\Resources\Certificate
49+
* @return \App\Http\Resources\CertificateResource
5050
*/
5151
public function update(CertificateUpdateRequest $request, Certificate $certificate)
5252
{

tests/fixtures/controllers/certificate-type-controller.php

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -5,8 +5,8 @@
55
use App\CertificateType;
66
use App\Http\Requests\CertificateTypeStoreRequest;
77
use App\Http\Requests\CertificateTypeUpdateRequest;
8-
use App\Http\Resources\CertificateType as CertificateTypeResource;
98
use App\Http\Resources\CertificateTypeCollection;
9+
use App\Http\Resources\CertificateTypeResource;
1010
use Illuminate\Http\Request;
1111

1212
class CertificateTypeController extends Controller
@@ -24,7 +24,7 @@ public function index(Request $request)
2424

2525
/**
2626
* @param \App\Http\Requests\CertificateTypeStoreRequest $request
27-
* @return \App\Http\Resources\CertificateType
27+
* @return \App\Http\Resources\CertificateTypeResource
2828
*/
2929
public function store(CertificateTypeStoreRequest $request)
3030
{
@@ -36,7 +36,7 @@ public function store(CertificateTypeStoreRequest $request)
3636
/**
3737
* @param \Illuminate\Http\Request $request
3838
* @param \App\CertificateType $certificateType
39-
* @return \App\Http\Resources\CertificateType
39+
* @return \App\Http\Resources\CertificateTypeResource
4040
*/
4141
public function show(Request $request, CertificateType $certificateType)
4242
{
@@ -46,7 +46,7 @@ public function show(Request $request, CertificateType $certificateType)
4646
/**
4747
* @param \App\Http\Requests\CertificateTypeUpdateRequest $request
4848
* @param \App\CertificateType $certificateType
49-
* @return \App\Http\Resources\CertificateType
49+
* @return \App\Http\Resources\CertificateTypeResource
5050
*/
5151
public function update(CertificateTypeUpdateRequest $request, CertificateType $certificateType)
5252
{

tests/fixtures/controllers/custom-models-namespace.php

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

55
use App\Http\Requests\TagStoreRequest;
66
use App\Http\Requests\TagUpdateRequest;
7-
use App\Http\Resources\Tag as TagResource;
87
use App\Http\Resources\TagCollection;
8+
use App\Http\Resources\TagResource;
99
use App\Models\Tag;
1010
use Illuminate\Http\Request;
1111

@@ -24,7 +24,7 @@ public function index(Request $request)
2424

2525
/**
2626
* @param \App\Http\Requests\TagStoreRequest $request
27-
* @return \App\Http\Resources\Tag
27+
* @return \App\Http\Resources\TagResource
2828
*/
2929
public function store(TagStoreRequest $request)
3030
{
@@ -36,7 +36,7 @@ public function store(TagStoreRequest $request)
3636
/**
3737
* @param \Illuminate\Http\Request $request
3838
* @param \App\Models\Tag $tag
39-
* @return \App\Http\Resources\Tag
39+
* @return \App\Http\Resources\TagResource
4040
*/
4141
public function show(Request $request, Tag $tag)
4242
{
@@ -46,7 +46,7 @@ public function show(Request $request, Tag $tag)
4646
/**
4747
* @param \App\Http\Requests\TagUpdateRequest $request
4848
* @param \App\Models\Tag $tag
49-
* @return \App\Http\Resources\Tag
49+
* @return \App\Http\Resources\TagResource
5050
*/
5151
public function update(TagUpdateRequest $request, Tag $tag)
5252
{

tests/fixtures/controllers/resource-statements.php

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,8 @@
22

33
namespace App\Http\Controllers;
44

5-
use App\Http\Resources\User as UserResource;
65
use App\Http\Resources\UserCollection;
6+
use App\Http\Resources\UserResource;
77
use App\User;
88
use Illuminate\Http\Request;
99

@@ -20,7 +20,7 @@ public function index(Request $request)
2020

2121
/**
2222
* @param \Illuminate\Http\Request $request
23-
* @return \App\Http\Resources\User
23+
* @return \App\Http\Resources\UserResource
2424
*/
2525
public function store(Request $request)
2626
{
@@ -30,7 +30,7 @@ public function store(Request $request)
3030
/**
3131
* @param \Illuminate\Http\Request $request
3232
* @param \App\User $user
33-
* @return \App\Http\Resources\User
33+
* @return \App\Http\Resources\UserResource
3434
*/
3535
public function show(Request $request, User $user)
3636
{

tests/fixtures/resources/certificate.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44

55
use Illuminate\Http\Resources\Json\JsonResource;
66

7-
class Certificate extends JsonResource
7+
class CertificateResource extends JsonResource
88
{
99
/**
1010
* Transform the resource into an array.

0 commit comments

Comments
 (0)