|
8 | 8 | use Dru1x\ExpoPush\PushMessage\PushMessage; |
9 | 9 | use Dru1x\ExpoPush\PushMessage\PushMessageCollection; |
10 | 10 | use Dru1x\ExpoPush\PushTicket\FailedPushTicket; |
| 11 | +use Dru1x\ExpoPush\PushTicket\PushTicketErrorCode; |
11 | 12 | use Dru1x\ExpoPush\PushTicket\SuccessfulPushTicket; |
12 | 13 | use Dru1x\ExpoPush\PushToken\PushToken; |
13 | 14 | use Dru1x\ExpoPush\Request\SendNotificationsRequest; |
@@ -166,6 +167,42 @@ public function create_dto_from_response_returns_push_ticket_collection(): void |
166 | 167 | $this->assertInstanceOf(FailedPushTicket::class, $ticket3); |
167 | 168 | } |
168 | 169 |
|
| 170 | + #[Test] |
| 171 | + public function create_dto_from_response_maps_unrecognized_error_code_to_unknown(): void |
| 172 | + { |
| 173 | + $request = new SendNotificationsRequest( |
| 174 | + new PushMessageCollection( |
| 175 | + new PushMessage(to: new PushToken('ExponentPushToken[zzzzzzzzzzzzzzzzzzzzzz]')), |
| 176 | + ) |
| 177 | + ); |
| 178 | + |
| 179 | + $this->mockClient->addResponses([ |
| 180 | + SendNotificationsRequest::class => MockResponse::make( |
| 181 | + body: [ |
| 182 | + 'data' => [ |
| 183 | + [ |
| 184 | + 'status' => 'error', |
| 185 | + 'message' => '"ExponentPushToken[zzzzzzzzzzzzzzzzzzzzzz]" is not a registered push notification recipient', |
| 186 | + 'details' => [ |
| 187 | + 'error' => 'SomeBrandNewErrorCode', |
| 188 | + 'expoPushToken' => 'ExponentPushToken[zzzzzzzzzzzzzzzzzzzzzz]', |
| 189 | + ], |
| 190 | + ], |
| 191 | + ], |
| 192 | + ], |
| 193 | + headers: ['Content-Type' => 'application/json'] |
| 194 | + ), |
| 195 | + ]); |
| 196 | + |
| 197 | + $dto = $request->createDtoFromResponse( |
| 198 | + $this->connector->send($request) |
| 199 | + ); |
| 200 | + |
| 201 | + $ticket = $dto->get(0); |
| 202 | + $this->assertInstanceOf(FailedPushTicket::class, $ticket); |
| 203 | + $this->assertEquals(PushTicketErrorCode::Unknown, $ticket->details->error); |
| 204 | + } |
| 205 | + |
169 | 206 | #[Test] |
170 | 207 | public function create_dto_from_response_throws_exception_when_body_cannot_be_decoded(): void |
171 | 208 | { |
|
0 commit comments