|
7 | 7 | use Illuminate\Http\Request;
|
8 | 8 | use Illuminate\Http\JsonResponse;
|
9 | 9 | use Illuminate\Http\Response as BaseResponse;
|
| 10 | +use Illuminate\Http\Resources\Json\JsonResource; |
10 | 11 |
|
11 | 12 | class ResponseTest extends TestCase
|
12 | 13 | {
|
@@ -56,4 +57,31 @@ public function test_xhr_response()
|
56 | 57 | $this->assertSame('/user/123', $page->url);
|
57 | 58 | $this->assertSame('123', $page->version);
|
58 | 59 | }
|
| 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 | + } |
59 | 87 | }
|
0 commit comments