Skip to content

Commit 2b966ac

Browse files
committed
Add support for "Responsable" props
1 parent dbe5163 commit 2b966ac

File tree

2 files changed

+31
-1
lines changed

2 files changed

+31
-1
lines changed

src/Response.php

+3-1
Original file line numberDiff line numberDiff line change
@@ -56,9 +56,11 @@ public function toResponse($request)
5656
? Arr::only($this->props, $only)
5757
: $this->props;
5858

59-
array_walk_recursive($props, function (&$prop) {
59+
array_walk_recursive($props, function (&$prop) use ($request) {
6060
if ($prop instanceof Closure) {
6161
$prop = App::call($prop);
62+
} else if ($prop instanceof Responsable) {
63+
$prop = $prop->toResponse($request)->getData();
6264
}
6365
});
6466

tests/ResponseTest.php

+28
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@
77
use Illuminate\Http\Request;
88
use Illuminate\Http\JsonResponse;
99
use Illuminate\Http\Response as BaseResponse;
10+
use Illuminate\Http\Resources\Json\JsonResource;
1011

1112
class ResponseTest extends TestCase
1213
{
@@ -56,4 +57,31 @@ public function test_xhr_response()
5657
$this->assertSame('/user/123', $page->url);
5758
$this->assertSame('123', $page->version);
5859
}
60+
61+
public function test_resource_response()
62+
{
63+
$request = Request::create('/user/123', 'GET');
64+
$request->headers->add(['X-Inertia' => 'true']);
65+
66+
$user = (object) ['name' => 'Jonathan'];
67+
68+
$resource = new class($user) extends JsonResource {
69+
public static $wrap = null;
70+
71+
public function toArray($request)
72+
{
73+
return ['name' => $this->name];
74+
}
75+
};
76+
77+
$response = new Response('User/Edit', ['user' => $resource], 'app', '123');
78+
$response = $response->toResponse($request);
79+
$page = $response->getData();
80+
81+
$this->assertInstanceOf(JsonResponse::class, $response);
82+
$this->assertSame('User/Edit', $page->component);
83+
$this->assertSame('Jonathan', $page->props->user->name);
84+
$this->assertSame('/user/123', $page->url);
85+
$this->assertSame('123', $page->version);
86+
}
5987
}

0 commit comments

Comments
 (0)