From ca857d842455fbc20da24a14c06798330baeb98e Mon Sep 17 00:00:00 2001 From: Craig Potter Date: Thu, 26 Mar 2026 11:33:41 +0000 Subject: [PATCH] Drop PHP 8.1, upgrade Saloon to v4 and Pest to v3 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit PHP 8.1 is EOL — bump minimum to 8.2. Upgrade saloonphp/saloon from v3 to v4 (CVE fix) and pestphp/pest from v2 to v3. Rename test fixtures to use slashes/hyphens instead of dots to comply with Saloon v4's stricter fixture name validation. Bump GitHub Actions checkout to v4. Co-Authored-By: Claude Opus 4.6 (1M context) --- .github/workflows/php-cs-fixer.yml | 2 +- .github/workflows/tests.yml | 4 ++-- composer.json | 6 +++--- tests/Feature/FirmResourceTest.php | 16 ++++++++-------- .../{firm.address.json => firm/address.json} | 0 .../details-not-found.json} | 0 .../{firm.details.json => firm/details.json} | 0 .../individuals-1.json} | 0 .../individuals-2.json} | 0 .../individuals-3.json} | 0 10 files changed, 14 insertions(+), 14 deletions(-) rename tests/Fixtures/Saloon/{firm.address.json => firm/address.json} (100%) rename tests/Fixtures/Saloon/{firm.details.not-found.json => firm/details-not-found.json} (100%) rename tests/Fixtures/Saloon/{firm.details.json => firm/details.json} (100%) rename tests/Fixtures/Saloon/{firm.individuals.1.json => firm/individuals-1.json} (100%) rename tests/Fixtures/Saloon/{firm.individuals.2.json => firm/individuals-2.json} (100%) rename tests/Fixtures/Saloon/{firm.individuals.3.json => firm/individuals-3.json} (100%) diff --git a/.github/workflows/php-cs-fixer.yml b/.github/workflows/php-cs-fixer.yml index 634914b..0b46acc 100644 --- a/.github/workflows/php-cs-fixer.yml +++ b/.github/workflows/php-cs-fixer.yml @@ -17,7 +17,7 @@ jobs: steps: - name: Checkout code - uses: actions/checkout@v3 + uses: actions/checkout@v4 - name: Run PHP CS Fixer uses: docker://oskarstark/php-cs-fixer-ga with: diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index 4624a7c..33b06ed 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -18,14 +18,14 @@ jobs: fail-fast: true matrix: os: [ ubuntu-latest, windows-latest ] - php: [ 8.1, 8.2, 8.3, 8.4 ] + php: [ 8.2, 8.3, 8.4 ] stability: [ prefer-lowest, prefer-stable ] name: P${{ matrix.php }} - ${{ matrix.stability }} - ${{ matrix.os }} steps: - name: Checkout code - uses: actions/checkout@v3 + uses: actions/checkout@v4 - name: Setup PHP uses: shivammathur/setup-php@v2 diff --git a/composer.json b/composer.json index ddd308b..c44e4b4 100644 --- a/composer.json +++ b/composer.json @@ -12,13 +12,13 @@ ], "homepage": "https://github.com/craigpotter", "require": { - "php": "^8.1", - "saloonphp/saloon": "^3.0", + "php": "^8.2", + "saloonphp/saloon": "^4.0", "saloonphp/pagination-plugin": "^2.0" }, "require-dev": { "friendsofphp/php-cs-fixer": "^3.5", - "pestphp/pest": "^2.0", + "pestphp/pest": "^3.0", "spatie/ray": "^1.33", "vlucas/phpdotenv": "^5.5" }, diff --git a/tests/Feature/FirmResourceTest.php b/tests/Feature/FirmResourceTest.php index 7d453a3..265e87e 100644 --- a/tests/Feature/FirmResourceTest.php +++ b/tests/Feature/FirmResourceTest.php @@ -15,7 +15,7 @@ it('can get a check a firms fca number exists', function () { $mockClient = new MockClient([ - GetFirmDetails::class => MockResponse::fixture('firm.details'), + GetFirmDetails::class => MockResponse::fixture('firm/details'), ]); $fca = new Fca($_ENV['AUTH_EMAIL'], $_ENV['AUTH_KEY']); @@ -28,7 +28,7 @@ it('can get a check a firms fca number does not exists', function () { $mockClient = new MockClient([ - GetFirmDetails::class => MockResponse::fixture('firm.details.not-found'), + GetFirmDetails::class => MockResponse::fixture('firm/details-not-found'), ]); $fca = new Fca($_ENV['AUTH_EMAIL'], $_ENV['AUTH_KEY']); @@ -41,7 +41,7 @@ it('can get a firms details', function () { $mockClient = new MockClient([ - GetFirmDetails::class => MockResponse::fixture('firm.details'), + GetFirmDetails::class => MockResponse::fixture('firm/details'), ]); $fca = new Fca($_ENV['AUTH_EMAIL'], $_ENV['AUTH_KEY']); @@ -60,7 +60,7 @@ it('throws an exception when the firm is not found', function () { $mockClient = new MockClient([ - GetFirmDetails::class => MockResponse::fixture('firm.details.not-found'), + GetFirmDetails::class => MockResponse::fixture('firm/details-not-found'), ]); $fca = new Fca($_ENV['AUTH_EMAIL'], $_ENV['AUTH_KEY']); @@ -74,9 +74,9 @@ $mockClient = new MockClient([ GetFirmIndividuals::class => function (PendingRequest $pendingRequest) { return match ($pendingRequest->query()->get('pgnp')) { - 1 => MockResponse::fixture('firm.individuals.1'), - 2 => MockResponse::fixture('firm.individuals.2'), - 3 => MockResponse::fixture('firm.individuals.3'), + 1 => MockResponse::fixture('firm/individuals-1'), + 2 => MockResponse::fixture('firm/individuals-2'), + 3 => MockResponse::fixture('firm/individuals-3'), }; }, ]); @@ -103,7 +103,7 @@ it('can get a firm addresses', function () { $mockClient = new MockClient([ - GetFirmAddresses::class => MockResponse::fixture('firm.address'), + GetFirmAddresses::class => MockResponse::fixture('firm/address'), ]); $fca = new Fca($_ENV['AUTH_EMAIL'], $_ENV['AUTH_KEY']); diff --git a/tests/Fixtures/Saloon/firm.address.json b/tests/Fixtures/Saloon/firm/address.json similarity index 100% rename from tests/Fixtures/Saloon/firm.address.json rename to tests/Fixtures/Saloon/firm/address.json diff --git a/tests/Fixtures/Saloon/firm.details.not-found.json b/tests/Fixtures/Saloon/firm/details-not-found.json similarity index 100% rename from tests/Fixtures/Saloon/firm.details.not-found.json rename to tests/Fixtures/Saloon/firm/details-not-found.json diff --git a/tests/Fixtures/Saloon/firm.details.json b/tests/Fixtures/Saloon/firm/details.json similarity index 100% rename from tests/Fixtures/Saloon/firm.details.json rename to tests/Fixtures/Saloon/firm/details.json diff --git a/tests/Fixtures/Saloon/firm.individuals.1.json b/tests/Fixtures/Saloon/firm/individuals-1.json similarity index 100% rename from tests/Fixtures/Saloon/firm.individuals.1.json rename to tests/Fixtures/Saloon/firm/individuals-1.json diff --git a/tests/Fixtures/Saloon/firm.individuals.2.json b/tests/Fixtures/Saloon/firm/individuals-2.json similarity index 100% rename from tests/Fixtures/Saloon/firm.individuals.2.json rename to tests/Fixtures/Saloon/firm/individuals-2.json diff --git a/tests/Fixtures/Saloon/firm.individuals.3.json b/tests/Fixtures/Saloon/firm/individuals-3.json similarity index 100% rename from tests/Fixtures/Saloon/firm.individuals.3.json rename to tests/Fixtures/Saloon/firm/individuals-3.json