Skip to content

Commit

Permalink
General: Make PushNotificationStatus a backed enum
Browse files Browse the repository at this point in the history
  • Loading branch information
pprkut committed Feb 10, 2024
1 parent 5414fe1 commit 6771878
Show file tree
Hide file tree
Showing 34 changed files with 270 additions and 281 deletions.
26 changes: 13 additions & 13 deletions src/Lunr/Vortex/APNS/ApnsPHP/APNSResponse.php
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,7 @@ class APNSResponse implements PushNotificationResponseInterface

/**
* The statuses per endpoint.
* @var array<PushNotificationStatus::*>
* @var array<PushNotificationStatus>
*/
protected array $statuses;

Expand Down Expand Up @@ -107,14 +107,14 @@ protected function set_statuses(array $endpoints, array $errors): void
case APNSHttpStatus::ERROR_UNREGISTERED:
case APNSBinaryStatus::ERROR_INVALID_TOKEN_SIZE:
case APNSBinaryStatus::ERROR_INVALID_TOKEN:
$status = PushNotificationStatus::INVALID_ENDPOINT;
$status = PushNotificationStatus::InvalidEndpoint;
break;
case APNSHttpStatus::TOO_MANY_REQUESTS:
case APNSBinaryStatus::ERROR_PROCESSING:
$status = PushNotificationStatus::TEMPORARY_ERROR;
$status = PushNotificationStatus::TemporaryError;
break;
default:
$status = PushNotificationStatus::UNKNOWN;
$status = PushNotificationStatus::Unknown;
break;
}

Expand All @@ -125,15 +125,15 @@ protected function set_statuses(array $endpoints, array $errors): void
case APNSHttpStatusReason::ERROR_CERTIFICATE_INVALID:
case APNSHttpStatusReason::ERROR_CERTIFICATE_ENVIRONMENT:
case APNSHttpStatusReason::ERROR_INVALID_AUTH_TOKEN:
$status = PushNotificationStatus::ERROR;
$status = PushNotificationStatus::Error;
break;
case APNSHttpStatusReason::ERROR_IDLE_TIMEOUT:
case APNSHttpStatusReason::ERROR_EXPIRED_AUTH_TOKEN:
$status = PushNotificationStatus::TEMPORARY_ERROR;
$status = PushNotificationStatus::TemporaryError;
break;
case APNSHttpStatusReason::ERROR_BAD_TOKEN:
case APNSHttpStatusReason::ERROR_NON_MATCHING_TOKEN:
$status = PushNotificationStatus::INVALID_ENDPOINT;
$status = PushNotificationStatus::InvalidEndpoint;
break;
default:
break;
Expand All @@ -152,7 +152,7 @@ protected function set_statuses(array $endpoints, array $errors): void
{
if (!isset($this->statuses[$endpoint]))
{
$this->statuses[$endpoint] = PushNotificationStatus::SUCCESS;
$this->statuses[$endpoint] = PushNotificationStatus::Success;
}
}
}
Expand All @@ -168,7 +168,7 @@ protected function report_invalid_endpoints(array &$invalid_endpoints): void
{
foreach ($invalid_endpoints as $invalid_endpoint)
{
$this->statuses[$invalid_endpoint] = PushNotificationStatus::INVALID_ENDPOINT;
$this->statuses[$invalid_endpoint] = PushNotificationStatus::InvalidEndpoint;
}
}

Expand All @@ -185,7 +185,7 @@ protected function report_error(array &$endpoints): void
{
if (!isset($this->statuses[$endpoint]))
{
$this->statuses[$endpoint] = PushNotificationStatus::ERROR;
$this->statuses[$endpoint] = PushNotificationStatus::Error;
}
}
}
Expand All @@ -195,11 +195,11 @@ protected function report_error(array &$endpoints): void
*
* @param string $endpoint Endpoint
*
* @return PushNotificationStatus::* Delivery status for the endpoint
* @return PushNotificationStatus Delivery status for the endpoint
*/
public function get_status(string $endpoint): int
public function get_status(string $endpoint): PushNotificationStatus
{
return isset($this->statuses[$endpoint]) ? $this->statuses[$endpoint] : PushNotificationStatus::UNKNOWN;
return isset($this->statuses[$endpoint]) ? $this->statuses[$endpoint] : PushNotificationStatus::Unknown;
}

}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -33,10 +33,10 @@ public function testPushErrorWithNoInvalidEndpoint(): void
$endpoints = [ 'endpoint1', 'endpoint2', 'endpoint3', 'endpoint4' ];
$invalid_endpoints = [];
$statuses = [
'endpoint1' => PushNotificationStatus::ERROR,
'endpoint2' => PushNotificationStatus::ERROR,
'endpoint3' => PushNotificationStatus::ERROR,
'endpoint4' => PushNotificationStatus::ERROR,
'endpoint1' => PushNotificationStatus::Error,
'endpoint2' => PushNotificationStatus::Error,
'endpoint3' => PushNotificationStatus::Error,
'endpoint4' => PushNotificationStatus::Error,
];

$this->class = new APNSResponse($this->logger, $endpoints, $invalid_endpoints, NULL, '{}');
Expand All @@ -56,10 +56,10 @@ public function testPushErrorWithSomeInvalidEndpoints(): void
$endpoints = [ 'endpoint1', 'endpoint2', 'endpoint3', 'endpoint4' ];
$invalid_endpoints = [ 'endpoint2', 'endpoint4' ];
$statuses = [
'endpoint1' => PushNotificationStatus::ERROR,
'endpoint2' => PushNotificationStatus::INVALID_ENDPOINT,
'endpoint3' => PushNotificationStatus::ERROR,
'endpoint4' => PushNotificationStatus::INVALID_ENDPOINT,
'endpoint1' => PushNotificationStatus::Error,
'endpoint2' => PushNotificationStatus::InvalidEndpoint,
'endpoint3' => PushNotificationStatus::Error,
'endpoint4' => PushNotificationStatus::InvalidEndpoint,
];

$this->class = new APNSResponse($this->logger, $endpoints, $invalid_endpoints, NULL, '{}');
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,7 @@ public function testPushSuccessWithSingleSuccess(): void
$endpoints = [ 'endpoint1' ];
$invalid_endpoints = [];
$errors = [];
$statuses = [ 'endpoint1' => PushNotificationStatus::SUCCESS ];
$statuses = [ 'endpoint1' => PushNotificationStatus::Success ];

$this->class = new APNSResponse($this->logger, $endpoints, $invalid_endpoints, $errors, '{}');

Expand Down Expand Up @@ -66,7 +66,7 @@ public function testPushSuccessWithSingleError(): void
],
],
];
$statuses = [ 'endpoint1' => PushNotificationStatus::INVALID_ENDPOINT ];
$statuses = [ 'endpoint1' => PushNotificationStatus::InvalidEndpoint ];

$this->apns_message->expects($this->once())
->method('getRecipient')
Expand Down Expand Up @@ -110,7 +110,7 @@ public function testPushSuccessWithSingleErrorHttpReason(): void
],
],
];
$statuses = [ 'endpoint1' => PushNotificationStatus::TEMPORARY_ERROR ];
$statuses = [ 'endpoint1' => PushNotificationStatus::TemporaryError ];

$this->apns_message->expects($this->once())
->method('getRecipient')
Expand Down Expand Up @@ -141,9 +141,9 @@ public function testPushSuccessWithMultipleSuccess(): void
$invalid_endpoints = [];
$errors = [];
$statuses = [
'endpoint1' => PushNotificationStatus::SUCCESS,
'endpoint2' => PushNotificationStatus::SUCCESS,
'endpoint3' => PushNotificationStatus::SUCCESS,
'endpoint1' => PushNotificationStatus::Success,
'endpoint2' => PushNotificationStatus::Success,
'endpoint3' => PushNotificationStatus::Success,
];

$this->class = new APNSResponse($this->logger, $endpoints, $invalid_endpoints, $errors, '{}');
Expand Down Expand Up @@ -228,10 +228,10 @@ public function testPushSuccessWithMultipleErrors(): void
],
];
$statuses = [
'endpoint1' => PushNotificationStatus::INVALID_ENDPOINT,
'endpoint2' => PushNotificationStatus::INVALID_ENDPOINT,
'endpoint3' => PushNotificationStatus::TEMPORARY_ERROR,
'endpoint4' => PushNotificationStatus::UNKNOWN,
'endpoint1' => PushNotificationStatus::InvalidEndpoint,
'endpoint2' => PushNotificationStatus::InvalidEndpoint,
'endpoint3' => PushNotificationStatus::TemporaryError,
'endpoint4' => PushNotificationStatus::Unknown,
];

$message1->expects($this->once())
Expand Down Expand Up @@ -395,14 +395,14 @@ public function testPushSuccessWithMultipleErrorsHttpReason(): void
],
];
$statuses = [
'endpoint1' => PushNotificationStatus::ERROR,
'endpoint2' => PushNotificationStatus::ERROR,
'endpoint3' => PushNotificationStatus::ERROR,
'endpoint4' => PushNotificationStatus::ERROR,
'endpoint5' => PushNotificationStatus::TEMPORARY_ERROR,
'endpoint6' => PushNotificationStatus::INVALID_ENDPOINT,
'endpoint6' => PushNotificationStatus::INVALID_ENDPOINT,
'endpoint7' => PushNotificationStatus::INVALID_ENDPOINT,
'endpoint1' => PushNotificationStatus::Error,
'endpoint2' => PushNotificationStatus::Error,
'endpoint3' => PushNotificationStatus::Error,
'endpoint4' => PushNotificationStatus::Error,
'endpoint5' => PushNotificationStatus::TemporaryError,
'endpoint6' => PushNotificationStatus::InvalidEndpoint,
'endpoint6' => PushNotificationStatus::InvalidEndpoint,
'endpoint7' => PushNotificationStatus::InvalidEndpoint,
];

$message1->expects($this->once())
Expand Down Expand Up @@ -510,11 +510,11 @@ public function testPushSuccessWithMultipleMixedResultsAndInvalidEndpoints(): vo
],
];
$statuses = [
'endpoint1' => PushNotificationStatus::SUCCESS,
'endpoint2' => PushNotificationStatus::INVALID_ENDPOINT,
'endpoint3' => PushNotificationStatus::INVALID_ENDPOINT,
'endpoint4' => PushNotificationStatus::TEMPORARY_ERROR,
'endpoint5' => PushNotificationStatus::SUCCESS,
'endpoint1' => PushNotificationStatus::Success,
'endpoint2' => PushNotificationStatus::InvalidEndpoint,
'endpoint3' => PushNotificationStatus::InvalidEndpoint,
'endpoint4' => PushNotificationStatus::TemporaryError,
'endpoint5' => PushNotificationStatus::Success,
];

$message4->expects($this->once())
Expand Down
26 changes: 13 additions & 13 deletions src/Lunr/Vortex/APNS/ApnsPHP/Tests/APNSResponseGetStatusTest.php
Original file line number Diff line number Diff line change
Expand Up @@ -45,36 +45,36 @@ public function endpointDataProvider(): array
{
$data = [];

$data['unknown status if no status set'] = [ [], PushNotificationStatus::UNKNOWN ];
$data['unknown status if no status set'] = [ [], PushNotificationStatus::Unknown ];

$data['unknown status if endpoint absent'] = [
[
'endpoint1' => PushNotificationStatus::INVALID_ENDPOINT,
'endpoint1' => PushNotificationStatus::InvalidEndpoint,
],
PushNotificationStatus::UNKNOWN,
PushNotificationStatus::Unknown,
];
$data['unknown status if endpoint absent, full set'] = [
[
'endpoint1' => PushNotificationStatus::ERROR,
'endpoint2' => PushNotificationStatus::INVALID_ENDPOINT,
'endpoint3' => PushNotificationStatus::SUCCESS,
'endpoint1' => PushNotificationStatus::Error,
'endpoint2' => PushNotificationStatus::InvalidEndpoint,
'endpoint3' => PushNotificationStatus::Success,
],
PushNotificationStatus::UNKNOWN,
PushNotificationStatus::Unknown,
];

$data['own status if present'] = [
[
'endpoint_param' => PushNotificationStatus::INVALID_ENDPOINT,
'endpoint_param' => PushNotificationStatus::InvalidEndpoint,
],
PushNotificationStatus::INVALID_ENDPOINT,
PushNotificationStatus::InvalidEndpoint,
];
$data['own status if present, full set'] = [
[
'endpoint1' => PushNotificationStatus::ERROR,
'endpoint_param' => PushNotificationStatus::SUCCESS,
'endpoint2' => PushNotificationStatus::TEMPORARY_ERROR,
'endpoint1' => PushNotificationStatus::Error,
'endpoint_param' => PushNotificationStatus::Success,
'endpoint2' => PushNotificationStatus::TemporaryError,
],
PushNotificationStatus::SUCCESS,
PushNotificationStatus::Success,
];

return $data;
Expand Down
10 changes: 5 additions & 5 deletions src/Lunr/Vortex/Email/EmailResponse.php
Original file line number Diff line number Diff line change
Expand Up @@ -69,13 +69,13 @@ public function __destruct()
*
* @param string $endpoint Endpoint
*
* @return PushNotificationStatus::* Delivery status for the endpoint
* @return PushNotificationStatus Delivery status for the endpoint
*/
public function get_status(string $endpoint): int
public function get_status(string $endpoint): PushNotificationStatus
{
if (!array_key_exists($endpoint, $this->statuses))
{
return PushNotificationStatus::UNKNOWN;
return PushNotificationStatus::Unknown;
}

return $this->statuses[$endpoint];
Expand All @@ -94,11 +94,11 @@ private function handle_sent_notifications(array $mail_results): void
{
if ($result_array['is_error'] === FALSE)
{
$this->statuses[$endpoint] = PushNotificationStatus::SUCCESS;
$this->statuses[$endpoint] = PushNotificationStatus::Success;
}
else
{
$this->statuses[$endpoint] = PushNotificationStatus::ERROR;
$this->statuses[$endpoint] = PushNotificationStatus::Error;

$context = [ 'endpoint' => $endpoint, 'message' => $result_array['error_message'] ];

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -29,14 +29,14 @@ public function setUp(): void
}

/**
* Test that get_status() returns PushNotification::ERROR
* Test that get_status() returns PushNotificationStatus::Error
* for an endpoint with a failed notification.
*
* @covers Lunr\Vortex\Email\EmailResponse::get_status
*/
public function testGetErrorStatusForEndpoint(): void
{
$this->assertEquals(PushNotificationStatus::ERROR, $this->class->get_status('error-endpoint'));
$this->assertEquals(PushNotificationStatus::Error, $this->class->get_status('error-endpoint'));
}

}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -29,14 +29,14 @@ public function setUp(): void
}

/**
* Test that get_status() returns PushNotification::SUCCESS
* Test that get_status() returns PushNotificationStatus::Success
* for an endpoint with a succesful notification.
*
* @covers Lunr\Vortex\Email\EmailResponse::get_status
*/
public function testGetSuccessStatusForEndpoint(): void
{
$this->assertEquals(PushNotificationStatus::SUCCESS, $this->class->get_status('success-endpoint'));
$this->assertEquals(PushNotificationStatus::Success, $this->class->get_status('success-endpoint'));
}

}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -21,14 +21,14 @@ class EmailResponseGetUnknownStatusTest extends EmailResponseTest
{

/**
* Test that get_status() returns PushNotification::UNKNOWN
* Test that get_status() returns PushNotificationStatus::Unknown
* when an unknown endpoint is passed in.
*
* @covers Lunr\Vortex\Email\EmailResponse::get_status
*/
public function testGetUnknownStatusForEndpoint(): void
{
$this->assertEquals(PushNotificationStatus::UNKNOWN, $this->class->get_status('unknown'));
$this->assertEquals(PushNotificationStatus::Unknown, $this->class->get_status('unknown'));
}

}
Expand Down
Loading

0 comments on commit 6771878

Please sign in to comment.