From f992dad0363d61251f1ac21fff44e9cc6d902494 Mon Sep 17 00:00:00 2001 From: mschielmann Date: Tue, 10 Sep 2024 14:32:50 +0200 Subject: [PATCH] Fix events test (#13) Make event tests more resilient --------- Co-authored-by: Michal Schielmann --- .github/workflows/build.yml | 3 ++- tests/EventTest.php | 21 ++++++++++----------- tests/utils/Assert.php | 4 +++- 3 files changed, 15 insertions(+), 13 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 26b7eb4..6429212 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -11,9 +11,10 @@ jobs: - name: PHP Composer uses: php-actions/composer@v6 - name: Tests - uses: php-actions/phpunit@v3 + uses: php-actions/phpunit@v3.0.0 with: args: tests + test_suffix: Test.php env: SECRET_KEY: ${{ secrets.SECRET_KEY }} PUBLIC_KEY: ${{ secrets.PUBLIC_KEY }} \ No newline at end of file diff --git a/tests/EventTest.php b/tests/EventTest.php index 2ae5c0e..f6f4b54 100644 --- a/tests/EventTest.php +++ b/tests/EventTest.php @@ -13,10 +13,13 @@ function testRetrieveEvent() $chargeRequest = Data::chargeRequest(); $charge = $this->gateway->createCharge($chargeRequest); - $eventId = $this->gateway->listEvents()->getList()[0]->getId(); + $events = $this->gateway->listEvents(); + $expectedEvent = array_filter($events->getList(), function ($event) use ($charge) { + return $event->getData()->getId() === $charge->getId() && $event->getType() === 'CHARGE_SUCCEEDED'; + })[0]; // when - $event = $this->gateway->retrieveEvent($eventId); + $event = $this->gateway->retrieveEvent($expectedEvent->getId()); // then Assert::assertChargeSucceededEvent($chargeRequest, $event); @@ -34,20 +37,16 @@ function testListEvents() $listRequest = (new EventListRequest()) ->includeTotalCount(true) - ->created((new CreatedFilter())->gte($charge1->getCreated())); + ->limit(100); // when $list = $this->gateway->listEvents($listRequest); // then - self::assertTrue($list->getTotalCount() >= 3); - $eventsForCreatedCharges = array_filter($list->getList(), function($charge) use ($expectedChargeIds) - { - return in_array($charge->getData()->getId(), $expectedChargeIds); + self::assertGreaterThanOrEqual(3, $list->getTotalCount()); + $eventsForCreatedCharges = array_filter($list->getList(), function ($event) use ($expectedChargeIds) { + return in_array($event->getData()->getId(), $expectedChargeIds) && $event->getType() === 'CHARGE_SUCCEEDED'; }); - self::assertTrue(sizeOf($eventsForCreatedCharges) == 3); - foreach ($eventsForCreatedCharges as $event) { - Assert::assertEquals('CHARGE_SUCCEEDED', $event->getType()); - } + self::assertEquals(3, sizeOf($eventsForCreatedCharges)); } } diff --git a/tests/utils/Assert.php b/tests/utils/Assert.php index 248d767..92723ec 100644 --- a/tests/utils/Assert.php +++ b/tests/utils/Assert.php @@ -224,7 +224,9 @@ public static function assertValidCheckoutRequest($signedCheckoutRequest) $checkoutPage = file_get_contents($checkoutUrl); $hasError = (strpos($checkoutPage, 'data-error-message') !== false); - self::assertFalse($hasError); + $error = substr($checkoutPage, strpos($checkoutPage, 'data-error-message')); + $error = substr($error, 0, strpos($error, "\">") + 1); + self::assertFalse($hasError, "Error for checkout url $checkoutUrl: $error"); $hasInput = (strpos($checkoutPage, '