|
2 | 2 |
|
3 | 3 | namespace Inertia\Tests;
|
4 | 4 |
|
| 5 | +use Illuminate\Contracts\Support\Arrayable; |
5 | 6 | use Inertia\Response;
|
6 | 7 | use Illuminate\View\View;
|
7 | 8 | use Illuminate\Http\Request;
|
@@ -126,4 +127,37 @@ public function test_lazy_resource_response()
|
126 | 127 | $this->assertSame('/users?page=1', $page->url);
|
127 | 128 | $this->assertSame('123', $page->version);
|
128 | 129 | }
|
| 130 | + |
| 131 | + public function test_arrayable_prop_response() |
| 132 | + { |
| 133 | + $request = Request::create('/user/123', 'GET'); |
| 134 | + $request->headers->add(['X-Inertia' => 'true']); |
| 135 | + |
| 136 | + $user = (object) ['name' => 'Jonathan']; |
| 137 | + |
| 138 | + $resource = new class($user) implements Arrayable { |
| 139 | + |
| 140 | + public $user; |
| 141 | + |
| 142 | + public function __construct($user) |
| 143 | + { |
| 144 | + $this->user = $user; |
| 145 | + } |
| 146 | + |
| 147 | + public function toArray() |
| 148 | + { |
| 149 | + return ['name' => $this->user->name]; |
| 150 | + } |
| 151 | + }; |
| 152 | + |
| 153 | + $response = new Response('User/Edit', ['user' => $resource], 'app', '123'); |
| 154 | + $response = $response->toResponse($request); |
| 155 | + $page = $response->getData(); |
| 156 | + |
| 157 | + $this->assertInstanceOf(JsonResponse::class, $response); |
| 158 | + $this->assertSame('User/Edit', $page->component); |
| 159 | + $this->assertSame('Jonathan', $page->props->user->name); |
| 160 | + $this->assertSame('/user/123', $page->url); |
| 161 | + $this->assertSame('123', $page->version); |
| 162 | + } |
129 | 163 | }
|
0 commit comments