[tests-only][full-ci]Retry listing notifications (#6839)

* Retry listing notifications

* use loop instaed

* use loop instaed

* throw exception

* use do while loop
This commit is contained in:
Swikriti Tripathi
2023-07-24 11:31:38 +05:45
committed by GitHub
parent 80e7f44604
commit fb7ba62726
@@ -315,10 +315,26 @@ class NotificationContext implements Context {
* @param TableNode $table
*
* @return void
* @throws Exception
*/
public function userShouldGetANotificationWithMessage(string $user, string $subject, TableNode $table):void {
$this->userListAllNotifications($user);
$actualMessage = str_replace(["\r", "\n"], " ", $this->filterResponseAccordingToNotificationSubject($subject)->message);
$count = 0;
// sometimes the test might try to get notification before the notification is created by the server
// in order to prevent test from failing because of that try to list the notifications again
do {
if ($count > 0) {
\sleep(1);
}
$this->featureContext->setResponse(null);
$this->userListAllNotifications($user);
$this->featureContext->theHTTPStatusCodeShouldBe(200);
++$count;
} while (!isset($this->filterResponseAccordingToNotificationSubject($subject)->message) && $count <= 5);
if (isset($this->filterResponseAccordingToNotificationSubject($subject)->message)) {
$actualMessage = str_replace(["\r", "\n"], " ", $this->filterResponseAccordingToNotificationSubject($subject)->message);
} else {
throw new \Exception("Notification was not found even after retrying for 5 seconds.");
}
$expectedMessage = $table->getColumnsHash()[0]['message'];
Assert::assertSame(
$expectedMessage,