diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 91b2707b..92189c1a 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -10,7 +10,6 @@ jobs: max-parallel: 3 matrix: php: - - '8.0' - '8.1' - '8.2' - '8.3' @@ -20,33 +19,17 @@ jobs: normalize: [ false ] validate: [ false ] laravel: - - '8.22' - - '9.0' - - '10.0' - - '11.0.3' - - '12.0' + - '10.48.29' + - '11.45.1' + - '12.19.3' exclude: - - php: '8.0' - laravel: '9.0' - - php: '8.0' - laravel: '10.0' - php: '8.1' - laravel: '8.22' + laravel: '11.45.1' - php: '8.1' - laravel: '9.0' - - php: '8.2' - laravel: '8.22' - - php: '8.2' - laravel: '9.0' - - php: '8.3' - laravel: '8.22' - - php: '8.3' - laravel: '9.0' - - php: '8.4' - laravel: '12.0' + laravel: '12.19.3' include: - - php: '8.0' - laravel: '9.39.0' + - php: '8.1' + laravel: '10.48.29' analysis: true coverage: 'xdebug' normalize: true @@ -69,9 +52,6 @@ jobs: if: matrix.validate == true run: composer validate --strict - - name: Install Laravel legacy factories support - if: matrix.laravel != '7.0' - run: composer require "laravel/legacy-factories:^1.1" --dev --no-interaction --no-update #- name: Install Laravel and Orchestra Testbench # run: composer require "illuminate/contracts:${{ matrix.laravel }}" --no-interaction --no-update @@ -94,14 +74,13 @@ jobs: run: composer install --prefer-dist --no-progress - name: Normalize composer file - if: matrix.normalize == true && matrix.php != '8.0' + if: matrix.normalize == true run: composer normalize --dry-run - name: Run test suite - run: vendor/bin/phpunit -v + run: vendor/bin/phpunit - name: Run static code analysis - if: matrix.analysis == true run: vendor/bin/phpstan --memory-limit=-1 - name: Upload coverage results diff --git a/.phpunit.cache/test-results b/.phpunit.cache/test-results new file mode 100644 index 00000000..8645e4b8 --- /dev/null +++ b/.phpunit.cache/test-results @@ -0,0 +1 @@ +{"version":1,"defects":[],"times":{"Osiset\\ShopifyApp\\Test\\Actions\\ActivatePlanTest::testRunRecurring":0.026,"Osiset\\ShopifyApp\\Test\\Actions\\ActivatePlanTest::testRunOnetime":0.005,"Osiset\\ShopifyApp\\Test\\Actions\\ActivateUsageChargeTest::testRun":0.004,"Osiset\\ShopifyApp\\Test\\Actions\\ActivateUsageChargeTest::testRunWithoutRecurringCharge":0.004,"Osiset\\ShopifyApp\\Test\\Actions\\ActivateUsageChargeTest::testRunWithLimitReached":0.004,"Osiset\\ShopifyApp\\Test\\Actions\\AfterAuthorizeTest::testRunDispatch":0.005,"Osiset\\ShopifyApp\\Test\\Actions\\AfterAuthorizeTest::testRunDispatchCustomConnection":0.003,"Osiset\\ShopifyApp\\Test\\Actions\\AfterAuthorizeTest::testRunInline":0.013,"Osiset\\ShopifyApp\\Test\\Actions\\AfterAuthorizeTest::testRunNoJobs":0.003,"Osiset\\ShopifyApp\\Test\\Actions\\AuthenticateShopTest::testShouldGoToLoginForInvalid":0.004,"Osiset\\ShopifyApp\\Test\\Actions\\AuthenticateShopTest::testShouldGoToAuthRedirectForInvalidHmac":0.005,"Osiset\\ShopifyApp\\Test\\Actions\\AuthenticateShopTest::testRuns":0.004,"Osiset\\ShopifyApp\\Test\\Actions\\AuthenticateShopTest::testManagedAppInstall":0.004,"Osiset\\ShopifyApp\\Test\\Actions\\CancelChargeTest::testCancel":0.003,"Osiset\\ShopifyApp\\Test\\Actions\\CancelChargeTest::testCancelOfNonRecurringNonOnetime":0.003,"Osiset\\ShopifyApp\\Test\\Actions\\CancelCurrentPlanTest::testCancelWithNoPlan":0.002,"Osiset\\ShopifyApp\\Test\\Actions\\CancelCurrentPlanTest::testCancelWithPlanButNoCharge":0.003,"Osiset\\ShopifyApp\\Test\\Actions\\CreateScriptsTest::testShouldNotCreateIfExists":0.003,"Osiset\\ShopifyApp\\Test\\Actions\\CreateScriptsTest::testShouldCreateOnlyNewOnesAndDeleteUnusedScripts":0.003,"Osiset\\ShopifyApp\\Test\\Actions\\CreateScriptsTest::testShouldCreate":0.003,"Osiset\\ShopifyApp\\Test\\Actions\\CreateWebhooksTest::testShouldNotCreateIfExists":0.003,"Osiset\\ShopifyApp\\Test\\Actions\\CreateWebhooksTest::testShouldCreate":0.003,"Osiset\\ShopifyApp\\Test\\Actions\\DeleteWebhooksTest::testShouldDelete":0.003,"Osiset\\ShopifyApp\\Test\\Actions\\DispatchScriptsTest::testRunDispatchOnNoScripts":0.022,"Osiset\\ShopifyApp\\Test\\Actions\\DispatchScriptsTest::testRunDispatch":0.003,"Osiset\\ShopifyApp\\Test\\Actions\\DispatchScriptsTest::testRunDispatchCustomConnection":0.003,"Osiset\\ShopifyApp\\Test\\Actions\\DispatchScriptsTest::testRunDispatchNow":0.005,"Osiset\\ShopifyApp\\Test\\Actions\\DispatchWebhooksTest::testRunDispatchOnNoScripts":0.002,"Osiset\\ShopifyApp\\Test\\Actions\\DispatchWebhooksTest::testRunDispatch":0.003,"Osiset\\ShopifyApp\\Test\\Actions\\DispatchWebhooksTest::testRunDispatchCustomConnection":0.004,"Osiset\\ShopifyApp\\Test\\Actions\\DispatchWebhooksTest::testRunDispatchNow":0.003,"Osiset\\ShopifyApp\\Test\\Actions\\GetPlanUrlTest::testRun30Days":0.003,"Osiset\\ShopifyApp\\Test\\Actions\\GetPlanUrlTest::testRunAnnual":0.003,"Osiset\\ShopifyApp\\Test\\Actions\\InstallShopTest::testNoShopShouldBeMade":0.003,"Osiset\\ShopifyApp\\Test\\Actions\\InstallShopTest::testWithoutCode":0.003,"Osiset\\ShopifyApp\\Test\\Actions\\InstallShopTest::testWithCode":0.004,"Osiset\\ShopifyApp\\Test\\Actions\\InstallShopTest::testWithCodeSoftDeletedShop":0.004,"Osiset\\ShopifyApp\\Test\\Actions\\InstallShopTest::testManagedAppInstall":0.005,"Osiset\\ShopifyApp\\Test\\Actions\\VerifyThemeSupportTest::testStoreWithUndefinedMainTheme":1.284,"Osiset\\ShopifyApp\\Test\\Actions\\VerifyThemeSupportTest::testStoreWithFullExtensionSupport":0.007,"Osiset\\ShopifyApp\\Test\\Actions\\VerifyThemeSupportTest::testStoreWithPartialExtensionSupport":0.003,"Osiset\\ShopifyApp\\Test\\Actions\\VerifyThemeSupportTest::testStoreWithoutExtensionSupport":0.002,"Osiset\\ShopifyApp\\Test\\Console\\AddVariablesCommandTest::testItShouldRun":0.008,"Osiset\\ShopifyApp\\Test\\Console\\AddVariablesCommandTest::testItShouldRunWithAlwaysNo":0.004,"Osiset\\ShopifyApp\\Test\\Console\\AddVariablesCommandTest::testItShouldRunWithForce":0.047,"Osiset\\ShopifyApp\\Test\\Console\\AddVariablesCommandTest::testItShouldRunWithoutForceAndNo":0.004,"Osiset\\ShopifyApp\\Test\\Console\\AddVariablesCommandTest::testItShouldRunWithoutForceAndYes":0.003,"Osiset\\ShopifyApp\\Test\\Console\\AddVariablesCommandTest::testItShouldRunWithMissingEnv":0.002,"Osiset\\ShopifyApp\\Test\\Console\\WebhookJobMakeCommandTest::testItShouldRun":0.004,"Osiset\\ShopifyApp\\Test\\Console\\WebhookJobMakeCommandTest::testShouldMakeUrlFromName":0.002,"Osiset\\ShopifyApp\\Test\\Directives\\SessionTokenTest::testDirective":0.003,"Osiset\\ShopifyApp\\Test\\Http\\Middleware\\AuthProxyTest::testRuns":0.007,"Osiset\\ShopifyApp\\Test\\Http\\Middleware\\AuthProxyTest::testDeniesForMissingShop":0.005,"Osiset\\ShopifyApp\\Test\\Http\\Middleware\\AuthProxyTest::testDoesNotRunForInvalidSignature":0.002,"Osiset\\ShopifyApp\\Test\\Http\\Middleware\\AuthProxyTest::testQueryStringArrayFormatParsedProperly":0.002,"Osiset\\ShopifyApp\\Test\\Http\\Middleware\\AuthWebhookTest::testDenysForMissingShopHeader":0.002,"Osiset\\ShopifyApp\\Test\\Http\\Middleware\\AuthWebhookTest::testDenysForMissingHmacHeader":0.002,"Osiset\\ShopifyApp\\Test\\Http\\Middleware\\AuthWebhookTest::testRuns":0.002,"Osiset\\ShopifyApp\\Test\\Http\\Middleware\\BillableTest::testEnabledBillingWithUnpaidShop":0.005,"Osiset\\ShopifyApp\\Test\\Http\\Middleware\\BillableTest::testEnabledBillingWithPaidShop":0.003,"Osiset\\ShopifyApp\\Test\\Http\\Middleware\\BillableTest::testEnabledBillingWithGrandfatheredShop":0.003,"Osiset\\ShopifyApp\\Test\\Http\\Middleware\\BillableTest::testEnabledBillingWithFreemiumShop":0.003,"Osiset\\ShopifyApp\\Test\\Http\\Middleware\\BillableTest::testDisabledBillingShouldPassOn":0.002,"Osiset\\ShopifyApp\\Test\\Http\\Middleware\\IframeProtectionTest::testIframeProtectionWithAuthorizedShop":0.004,"Osiset\\ShopifyApp\\Test\\Http\\Middleware\\IframeProtectionTest::testIframeProtectionWithUnauthorizedShop":0.002,"Osiset\\ShopifyApp\\Test\\Http\\Middleware\\IframeProtectionTest::testIframeProtectionWithExistingAncestorsInConfig":0.003,"Osiset\\ShopifyApp\\Test\\Http\\Middleware\\VerifyScopesTest::testMissingScopes":0.01,"Osiset\\ShopifyApp\\Test\\Http\\Middleware\\VerifyScopesTest::testMatchingScopes":0.003,"Osiset\\ShopifyApp\\Test\\Http\\Middleware\\VerifyScopesTest::testScopeApiFailure":0.009,"Osiset\\ShopifyApp\\Test\\Http\\Middleware\\VerifyShopifyTest::testHmacFail":0.003,"Osiset\\ShopifyApp\\Test\\Http\\Middleware\\VerifyShopifyTest::testSkipAuthenticateAndBillingRoutes":0.003,"Osiset\\ShopifyApp\\Test\\Http\\Middleware\\VerifyShopifyTest::testMissingToken":0.003,"Osiset\\ShopifyApp\\Test\\Http\\Middleware\\VerifyShopifyTest::testMissingTokenAjax":0.003,"Osiset\\ShopifyApp\\Test\\Http\\Middleware\\VerifyShopifyTest::testTokenProcessingAndLoginShop":0.006,"Osiset\\ShopifyApp\\Test\\Http\\Middleware\\VerifyShopifyTest::testTokenProcessingAndNotInstalledShop":0.003,"Osiset\\ShopifyApp\\Test\\Http\\Middleware\\VerifyShopifyTest::testTokenProcessingAndNotInstalledShopAjax":0.003,"Osiset\\ShopifyApp\\Test\\Http\\Middleware\\VerifyShopifyTest::testInvalidToken":0.003,"Osiset\\ShopifyApp\\Test\\Http\\Middleware\\VerifyShopifyTest::testInvalidTokenAjax":0.002,"Osiset\\ShopifyApp\\Test\\Http\\Middleware\\VerifyShopifyTest::testTokenProcessingAndMissMatchingShops":0.003,"Osiset\\ShopifyApp\\Test\\Http\\Middleware\\VerifyShopifyTest::testNotNativeAppBridgeWithTokenProcessingAndLoginShop":0.003,"Osiset\\ShopifyApp\\Test\\Http\\Middleware\\VerifyShopifyTest::testAccessingForbiddenMiddlewareRouteFromBrowserReceivedAccessError":0.006,"Osiset\\ShopifyApp\\Test\\Http\\Requests\\StoreUsageChargeTest::testFailsWithNoCode":0.009,"Osiset\\ShopifyApp\\Test\\Http\\Requests\\StoreUsageChargeTest::testFailsForInvalidSignature":0.002,"Osiset\\ShopifyApp\\Test\\Http\\Requests\\StoreUsageChargeTest::testPasses":0.002,"Osiset\\ShopifyApp\\Test\\Macros\\TokenRedirectTest::testTokenRedirect":0.002,"Osiset\\ShopifyApp\\Test\\Macros\\TokenRouteTest::testTokenRoute":0.002,"Osiset\\ShopifyApp\\Test\\Messaging\\Jobs\\AppUninstalledTest::testJobSoftDeletesShopAndCharges":0.006,"Osiset\\ShopifyApp\\Test\\Objects\\Transfers\\ChargeTest::testGetThrowsAnError":0.002,"Osiset\\ShopifyApp\\Test\\Objects\\Transfers\\ChargeTest::testSetThrowsAnError":0.002,"Osiset\\ShopifyApp\\Test\\Objects\\Transfers\\ChargeTest::testToArray":0.002,"Osiset\\ShopifyApp\\Test\\Objects\\Values\\MainThemeTest::testGetMainThemeId":0.002,"Osiset\\ShopifyApp\\Test\\Objects\\Values\\MainThemeTest::testGetMainThemeName":0.002,"Osiset\\ShopifyApp\\Test\\Objects\\Values\\MainThemeTest::testGetMainThemeRole":0.002,"Osiset\\ShopifyApp\\Test\\Objects\\Values\\SessionTokenTest::testShouldProcessForValidCheckoutExtensionToken":0.004,"Osiset\\ShopifyApp\\Test\\Objects\\Values\\SessionTokenTest::testShouldProcessForValidToken":0.002,"Osiset\\ShopifyApp\\Test\\Objects\\Values\\SessionTokenTest::testShouldProcessForExpiredTokenStillInLeewayPeriod":0.002,"Osiset\\ShopifyApp\\Test\\Objects\\Values\\SessionTokenTest::testShouldThrowExceptionForExpiredTokenOutOfLeewayPeriod":0.002,"Osiset\\ShopifyApp\\Test\\Objects\\Values\\SessionTokenTest::testShouldProcessForNotBeforeTokenStillInLeewayPeriod":0.002,"Osiset\\ShopifyApp\\Test\\Objects\\Values\\SessionTokenTest::testShouldThrowExceptionForNotBeforeTokenOutOfLeewayPeriod":0.002,"Osiset\\ShopifyApp\\Test\\Objects\\Values\\SessionTokenTest::testShouldProcessForIssuedAtTokenStillInLeewayPeriod":0.002,"Osiset\\ShopifyApp\\Test\\Objects\\Values\\SessionTokenTest::testShouldThrowExceptionForIssuedAtTokenOutOfLeewayPeriod":0.002,"Osiset\\ShopifyApp\\Test\\Objects\\Values\\SessionTokenTest::testShouldThrowExceptionForMalformedToken":0.002,"Osiset\\ShopifyApp\\Test\\Objects\\Values\\SessionTokenTest::testShouldThrowExceptionForInvalidToken":0.002,"Osiset\\ShopifyApp\\Test\\Objects\\Values\\SessionTokenTest::testShouldThrowExceptionForExpiredToken":0.002,"Osiset\\ShopifyApp\\Test\\Objects\\Values\\ShopDomainTest::testAddsMyshopifyDomainIfNotContainsPeriod":0.003,"Osiset\\ShopifyApp\\Test\\Objects\\Values\\ShopDomainTest::testDoesNotAddMyshopifyDomainIfContainsPeriod":0.003,"Osiset\\ShopifyApp\\Test\\Objects\\Values\\ShopDomainTest::testStripsTheProtocol":0.003,"Osiset\\ShopifyApp\\Test\\Objects\\Values\\ShopDomainTest::testDoesNotAcceptNonMyshopifyDomains":0.003,"Osiset\\ShopifyApp\\Test\\Objects\\Values\\ShopDomainTest::testDoesNotAcceptNonMyshopifyDomainsWithSinglePeriod":0.002,"Osiset\\ShopifyApp\\Test\\Services\\ApiHelperTest::testMake":0.002,"Osiset\\ShopifyApp\\Test\\Services\\ApiHelperTest::testSetAndGetApi":0.002,"Osiset\\ShopifyApp\\Test\\Services\\ApiHelperTest::testWithApi":0.004,"Osiset\\ShopifyApp\\Test\\Services\\ApiHelperTest::testBuildAuthUrl":0.002,"Osiset\\ShopifyApp\\Test\\Services\\ApiHelperTest::testGetScriptTags":0.003,"Osiset\\ShopifyApp\\Test\\Services\\ApiHelperTest::testCreateScriptTags":0.003,"Osiset\\ShopifyApp\\Test\\Services\\ApiHelperTest::testDeleteScriptTag":0.002,"Osiset\\ShopifyApp\\Test\\Services\\ApiHelperTest::testGetCharge":0.003,"Osiset\\ShopifyApp\\Test\\Services\\ApiHelperTest::testActivateCharge":0.003,"Osiset\\ShopifyApp\\Test\\Services\\ApiHelperTest::testCreateCharge":0.003,"Osiset\\ShopifyApp\\Test\\Services\\ApiHelperTest::testGetWebhooks":0.002,"Osiset\\ShopifyApp\\Test\\Services\\ApiHelperTest::testCreateWebhook":0.002,"Osiset\\ShopifyApp\\Test\\Services\\ApiHelperTest::testDeleteWebhook":0.003,"Osiset\\ShopifyApp\\Test\\Services\\ApiHelperTest::testCreateUsageCharge":0.002,"Osiset\\ShopifyApp\\Test\\Services\\ApiHelperTest::testErrors":0.003,"Osiset\\ShopifyApp\\Test\\Services\\ChargeHelperTest::testUseAndGetCharge":0.003,"Osiset\\ShopifyApp\\Test\\Services\\ChargeHelperTest::testRetrieveCharge":0.003,"Osiset\\ShopifyApp\\Test\\Services\\ChargeHelperTest::testTrial":0.003,"Osiset\\ShopifyApp\\Test\\Services\\ChargeHelperTest::testNonTrial":0.006,"Osiset\\ShopifyApp\\Test\\Services\\ChargeHelperTest::testTrialCancelled":0.004,"Osiset\\ShopifyApp\\Test\\Services\\ChargeHelperTest::testBeginEndPeriod":0.003,"Osiset\\ShopifyApp\\Test\\Services\\ChargeHelperTest::testChargeForPlan":0.004,"Osiset\\ShopifyApp\\Test\\Services\\ChargeHelperTest::testDetails":0.004,"Osiset\\ShopifyApp\\Test\\Services\\ChargeHelperTest::testDetails2":0.004,"Osiset\\ShopifyApp\\Test\\Services\\CookieHelperTest::testSameSiteCookie":0.004,"Osiset\\ShopifyApp\\Test\\Services\\CookieHelperTest::testSetCookiePolicy":0.002,"Osiset\\ShopifyApp\\Test\\Services\\ThemeHelperTest::testThemeIsReady":0.003,"Osiset\\ShopifyApp\\Test\\Services\\ThemeHelperTest::testThemeIsReadyFailure":0.003,"Osiset\\ShopifyApp\\Test\\Services\\ThemeHelperTest::testTemplateJsonFiles":0.003,"Osiset\\ShopifyApp\\Test\\Services\\ThemeHelperTest::testMainSections":0.003,"Osiset\\ShopifyApp\\Test\\Services\\ThemeHelperTest::testSectionsWithAppBlock":0.003,"Osiset\\ShopifyApp\\Test\\Storage\\Commands\\ChargeTest::testMake":0.003,"Osiset\\ShopifyApp\\Test\\Storage\\Commands\\ChargeTest::testDelete":0.003,"Osiset\\ShopifyApp\\Test\\Storage\\Commands\\ChargeTest::testMakeUsage":0.002,"Osiset\\ShopifyApp\\Test\\Storage\\Commands\\ChargeTest::testCancel":0.003,"Osiset\\ShopifyApp\\Test\\Storage\\Commands\\ShopTest::testMake":0.002,"Osiset\\ShopifyApp\\Test\\Storage\\Commands\\ShopTest::testSetToPlan":0.003,"Osiset\\ShopifyApp\\Test\\Storage\\Commands\\ShopTest::testSetAccessToken":0.003,"Osiset\\ShopifyApp\\Test\\Storage\\Commands\\ShopTest::testClean":0.003,"Osiset\\ShopifyApp\\Test\\Storage\\Commands\\ShopTest::testSoftDeleteAndRestore":0.003,"Osiset\\ShopifyApp\\Test\\Storage\\Commands\\ShopTest::testSetAsFreemium":0.003,"Osiset\\ShopifyApp\\Test\\Storage\\Commands\\ShopTest::testSetNamespace":0.003,"Osiset\\ShopifyApp\\Test\\Storage\\Models\\ChargeTest::testModel":0.006,"Osiset\\ShopifyApp\\Test\\Storage\\Models\\PlanTest::testModel":0.003,"Osiset\\ShopifyApp\\Test\\Storage\\Queries\\ChargeTest::testChargeGetById":0.003,"Osiset\\ShopifyApp\\Test\\Storage\\Queries\\ChargeTest::testChargeGetByChargeReference":0.003,"Osiset\\ShopifyApp\\Test\\Storage\\Queries\\ChargeTest::testPlangetByReferenceAndShopId":0.003,"Osiset\\ShopifyApp\\Test\\Storage\\Queries\\PlanTest::testPlanGetById":0.002,"Osiset\\ShopifyApp\\Test\\Storage\\Queries\\PlanTest::testPlanGetDefault":0.002,"Osiset\\ShopifyApp\\Test\\Storage\\Queries\\PlanTest::testPlanGetAll":0.002,"Osiset\\ShopifyApp\\Test\\Storage\\Queries\\ShopTest::testShopGetById":0.002,"Osiset\\ShopifyApp\\Test\\Storage\\Queries\\ShopTest::testShopGetByDomain":0.003,"Osiset\\ShopifyApp\\Test\\Storage\\Queries\\ShopTest::testShopGetAll":0.002,"Osiset\\ShopifyApp\\Test\\Traits\\ApiControllerTest::testApiWithoutToken":0.01,"Osiset\\ShopifyApp\\Test\\Traits\\ApiControllerTest::testApiWithToken":0.005,"Osiset\\ShopifyApp\\Test\\Traits\\ApiControllerTest::testApiGetSelf":0.003,"Osiset\\ShopifyApp\\Test\\Traits\\ApiControllerTest::testApiGetPlans":0.003,"Osiset\\ShopifyApp\\Test\\Traits\\AuthControllerTest::testAuthRedirectsToShopifyWhenNoCode":0.009,"Osiset\\ShopifyApp\\Test\\Traits\\AuthControllerTest::testAuthAcceptsShopWithCode":0.005,"Osiset\\ShopifyApp\\Test\\Traits\\AuthControllerTest::testAuthThrowExceptionForBadHmac":0.008,"Osiset\\ShopifyApp\\Test\\Traits\\AuthControllerTest::testAuthThrowExceptionForMissingShopAndAuthenticatedUser":0.003,"Osiset\\ShopifyApp\\Test\\Traits\\BillingControllerTest::testSendsShopToBillingScreen":0.006,"Osiset\\ShopifyApp\\Test\\Traits\\BillingControllerTest::testReactFrontendShopAcceptsBilling":0.005,"Osiset\\ShopifyApp\\Test\\Traits\\BillingControllerTest::testBladeFrontendShopAcceptsBilling":0.005,"Osiset\\ShopifyApp\\Test\\Traits\\BillingControllerTest::testUsageChargeSuccess":0.007,"Osiset\\ShopifyApp\\Test\\Traits\\BillingControllerTest::testReturnToSettingScreenNoPlan":0.004,"Osiset\\ShopifyApp\\Test\\Traits\\BillingControllerTest::testUsageChargeSuccessWithShopParam":0.005,"Osiset\\ShopifyApp\\Test\\Traits\\BillingControllerTest::testUsageChargeFailWithoutShopParam":0.004,"Osiset\\ShopifyApp\\Test\\Traits\\HomeControllerTest::testHomeRoute":0.005,"Osiset\\ShopifyApp\\Test\\Traits\\HomeControllerTest::testHomeRouteHostAdmin":0.008,"Osiset\\ShopifyApp\\Test\\Traits\\ShopAccessibleTest::testSuccess":0.004,"Osiset\\ShopifyApp\\Test\\Traits\\ShopModelTest::testModel":0.004,"Osiset\\ShopifyApp\\Test\\Traits\\ShopModelTest::testOfflineToken":0.003,"Osiset\\ShopifyApp\\Test\\Traits\\ShopModelTest::testNamespacingAndFreemium":0.003,"Osiset\\ShopifyApp\\Test\\Traits\\WebhookControllerTest::testSuccess":0.004,"Osiset\\ShopifyApp\\Test\\Traits\\WebhookControllerTest::testFailure":0.003,"Osiset\\ShopifyApp\\Test\\Traits\\WebhookControllerTest::testHandleWithCustomClassMapping":0.003,"Osiset\\ShopifyApp\\Test\\Traits\\WebhookControllerTest::testHandleDispatchesJobWithCustomConnection":0.003,"Osiset\\ShopifyApp\\Test\\UtilTest::testHmacCreator":0.002,"Osiset\\ShopifyApp\\Test\\UtilTest::testRegisterPackageRoutes":0.002,"Osiset\\ShopifyApp\\Test\\UtilTest::testRouteNames":0.002,"Osiset\\ShopifyApp\\Test\\UtilTest::testGetShopifyConfig":0.002,"Osiset\\ShopifyApp\\Test\\UtilTest::testGraphQLWebhookTopic":0.002,"Osiset\\ShopifyApp\\Test\\UtilTest::testUseNativeAppBridgeIsTrue":0.002,"Osiset\\ShopifyApp\\Test\\UtilTest::testUseNativeAppBridgeIsFalse":0.002,"Osiset\\ShopifyApp\\Test\\UtilTest::testHasAppLegacySupport":0.002}} \ No newline at end of file diff --git a/composer.json b/composer.json index bcfd78de..9718ffe1 100644 --- a/composer.json +++ b/composer.json @@ -1,6 +1,7 @@ { "name": "kyon147/laravel-shopify", "description": "Shopify package for Laravel to aide in app development", + "license": "MIT", "keywords": [ "api", "callback-url", @@ -16,36 +17,52 @@ "shopify-app", "webhook" ], - "license": "MIT", "authors": [ { "name": "Luke (Kyon147)", "email": "support@appydesign.co.uk" } ], + "support": { + "issues": "https://github.com/Kyon147/laravel-shopify/issues", + "forum": "https://github.com/Kyon147/laravel-shopify/discussions", + "wiki": "https://github.com/Kyon147/laravel-shopify/wiki", + "source": "https://github.com/Kyon147/laravel-shopify" + }, "require": { - "php": "^8.0 || ^8.1 || ^8.2 || ^8.3 || ^8.4", + "php": ">=8.1", "ext-json": "*", "funeralzone/valueobjects": "^0.5", + "gnikyt/basic-shopify-api": "^11.0", "jenssegers/agent": "^2.6", - "laravel/framework": "^8.0 || ^9.0 || ^10.0 || ^11.0 || ^12.0", - "gnikyt/basic-shopify-api": "^9.0 || ^10.0 || ^11.0" + "laravel/framework": "^10.0 || ^11.0 || ^12.0" }, "require-dev": { - "laravel/legacy-factories": "^v1.3.0", "ergebnis/composer-normalize": "^2.8", "friendsofphp/php-cs-fixer": "^3.0", + "laravel/legacy-factories": "^1.3.0", "mockery/mockery": "^1.0", - "orchestra/database": "~3.8 || ~4.0 || ~5.0 || ~6.0 || ~7.0 || ~8.0 || ~9.0", - "orchestra/testbench": "~3.8 || ~4.0 || ~5.0 || ~6.0 || ~7.0 || ~8.0 || ~9.0", - "phpstan/phpstan": "^0.12", - "phpunit/phpunit": "~8.0 || ^9.0 || ^10.0 || ^11.0" + "orchestra/testbench": "^8.0 || ^9.0", + "phpstan/phpstan": "^2.1", + "phpunit/phpunit": "^8.0 || ^9.0 || ^10.0 || ^11.0" + }, + "minimum-stability": "dev", + "prefer-stable": true, + "autoload": { + "psr-4": { + "Osiset\\ShopifyApp\\": "src/" + } + }, + "autoload-dev": { + "psr-4": { + "Osiset\\ShopifyApp\\Test\\": "tests/" + } }, "config": { - "sort-packages": true, "allow-plugins": { "ergebnis/composer-normalize": true - } + }, + "sort-packages": true }, "extra": { "laravel": { @@ -54,28 +71,10 @@ ] } }, - "autoload": { - "psr-4": { - "Osiset\\ShopifyApp\\": "src/" - } - }, - "autoload-dev": { - "psr-4": { - "Osiset\\ShopifyApp\\Test\\": "tests/" - } - }, - "minimum-stability": "dev", - "prefer-stable": true, "scripts": { "lint": "vendor/bin/php-cs-fixer fix", "test": "vendor/bin/phpunit", "test-html-cov": "vendor/bin/phpunit --coverage-html ./build/html/", "test-no-cov": "vendor/bin/phpunit --no-coverage" - }, - "support": { - "issues": "https://github.com/Kyon147/laravel-shopify/issues", - "forum": "https://github.com/Kyon147/laravel-shopify/discussions", - "wiki": "https://github.com/Kyon147/laravel-shopify/wiki", - "source": "https://github.com/Kyon147/laravel-shopify" } } diff --git a/ignore-by-php-version.neon.php b/ignore-by-php-version.neon.php new file mode 100644 index 00000000..46844fa3 --- /dev/null +++ b/ignore-by-php-version.neon.php @@ -0,0 +1,20 @@ += 80408) { + $config = array_merge_recursive($config, $adapter->load(__DIR__.'/phpstan-baseline-84.neon')); +} + +if (PHP_VERSION_ID < 80408) { + $config = array_merge_recursive($config, $adapter->load(__DIR__.'/phpstan-baseline-81.neon')); +} + +return $config; diff --git a/phpstan-baseline-81.neon b/phpstan-baseline-81.neon new file mode 100644 index 00000000..f577a40f --- /dev/null +++ b/phpstan-baseline-81.neon @@ -0,0 +1,7 @@ +parameters: + ignoreErrors: + - + message: '#^Variable \$queryString on left side of \?\? always exists and is not nullable\.$#' + identifier: nullCoalesce.variable + count: 1 + path: src/Util.php diff --git a/phpstan-baseline-84.neon b/phpstan-baseline-84.neon new file mode 100644 index 00000000..86a33342 --- /dev/null +++ b/phpstan-baseline-84.neon @@ -0,0 +1,49 @@ +parameters: + ignoreErrors: + - + message: '#^Deprecated in PHP 8\.4\: Parameter \#1 \$session \(Gnikyt\\BasicShopifyAPI\\Session\) is implicitly nullable via default value null\.$#' + identifier: parameter.implicitlyNullable + count: 1 + path: src/Contracts/ApiHelper.php + + - + message: '#^Deprecated in PHP 8\.4\: Parameter \#1 \$session \(Gnikyt\\BasicShopifyAPI\\Session\) is implicitly nullable via default value null\.$#' + identifier: parameter.implicitlyNullable + count: 2 + path: src/Services/ApiHelper.php + + - + message: '#^Deprecated in PHP 8\.4\: Parameter \#3 \$payload \(array\) is implicitly nullable via default value null\.$#' + identifier: parameter.implicitlyNullable + count: 1 + path: src/Services/ApiHelper.php + + - + message: '#^Deprecated in PHP 8\.4\: Parameter \#2 \$delimiter \(string\) is implicitly nullable via default value null\.$#' + identifier: parameter.implicitlyNullable + count: 1 + path: src/Util.php + + - + message: '#^Variable \$queryString on left side of \?\? always exists and is not nullable\.$#' + identifier: nullCoalesce.variable + count: 1 + path: src/Util.php + + - + message: '#^Deprecated in PHP 8\.4\: Parameter \#3 \$params \(array\) is implicitly nullable via default value null\.$#' + identifier: parameter.implicitlyNullable + count: 1 + path: tests/Stubs/Api.php + + - + message: '#^Deprecated in PHP 8\.4\: Parameter \#2 \$requestInstance \(Illuminate\\Http\\Request\) is implicitly nullable via default value null\.$#' + identifier: parameter.implicitlyNullable + count: 1 + path: tests/TestCase.php + + - + message: '#^Deprecated in PHP 8\.4\: Parameter \#3 \$cb \(Closure\) is implicitly nullable via default value null\.$#' + identifier: parameter.implicitlyNullable + count: 1 + path: tests/TestCase.php diff --git a/phpstan.neon b/phpstan.neon index 7539d708..5a6921b0 100644 --- a/phpstan.neon +++ b/phpstan.neon @@ -1,3 +1,6 @@ +includes: + - ignore-by-php-version.neon.php + parameters: level: 1 paths: diff --git a/phpunit.xml.dist b/phpunit.xml.dist index 9fc87217..29467741 100644 --- a/phpunit.xml.dist +++ b/phpunit.xml.dist @@ -1,20 +1,29 @@ - - + + + tests + + + + + + + + + src/ @@ -26,20 +35,5 @@ src/Messaging/Events/ src/ShopifyAppProvider.php - - - - - - - - tests - - - - - - - - + diff --git a/src/resources/database/factories/ChargeFactory.php b/src/resources/database/factories/ChargeFactory.php index a53e6cf6..812184df 100644 --- a/src/resources/database/factories/ChargeFactory.php +++ b/src/resources/database/factories/ChargeFactory.php @@ -12,7 +12,7 @@ $factory->define($chargeModel, function (Faker $faker) { return [ 'charge_id' => $faker->randomNumber(8), - 'name' => $faker->word, + 'name' => $faker->word(), 'price' => $faker->randomFloat(), 'status' => ChargeStatus::ACCEPTED()->toNative(), ]; diff --git a/src/resources/database/factories/PlanFactory.php b/src/resources/database/factories/PlanFactory.php index 062f952a..c2c37370 100644 --- a/src/resources/database/factories/PlanFactory.php +++ b/src/resources/database/factories/PlanFactory.php @@ -10,7 +10,7 @@ $factory->define($planModel, function (Faker $faker) { return [ - 'name' => $faker->word, + 'name' => $faker->word(), 'price' => $faker->randomFloat(), ]; }); @@ -18,7 +18,7 @@ $factory->state($planModel, 'usage', function ($faker) { return [ 'capped_amount' => $faker->randomFloat(), - 'terms' => $faker->sentence, + 'terms' => $faker->sentence(), ]; }); diff --git a/src/resources/database/factories/ShopFactory.php b/src/resources/database/factories/ShopFactory.php index d5af07e8..93cb75c5 100644 --- a/src/resources/database/factories/ShopFactory.php +++ b/src/resources/database/factories/ShopFactory.php @@ -7,9 +7,9 @@ $factory->define($model, function (Faker $faker) { return [ - 'name' => "{$faker->domainWord}.myshopify.com", - 'password' => str_replace('-', '', $faker->uuid), - 'email' => $faker->email, + 'name' => "{$faker->domainWord()}.myshopify.com", + 'password' => str_replace('-', '', $faker->uuid()), + 'email' => $faker->email(), ]; }); diff --git a/tests/Stubs/Kernel.php b/tests/Stubs/Kernel.php index ccdd1328..d3eaed34 100644 --- a/tests/Stubs/Kernel.php +++ b/tests/Stubs/Kernel.php @@ -7,7 +7,6 @@ use Illuminate\Auth\Middleware\Authorize; use Illuminate\Routing\Middleware\SubstituteBindings; use Illuminate\Routing\Middleware\ThrottleRequests; -use Orchestra\Testbench\Http\Middleware\RedirectIfAuthenticated; use Osiset\ShopifyApp\Http\Middleware\AuthProxy; use Osiset\ShopifyApp\Http\Middleware\AuthWebhook; use Osiset\ShopifyApp\Http\Middleware\Billable; @@ -27,7 +26,6 @@ class Kernel extends \Orchestra\Testbench\Foundation\Http\Kernel 'auth.basic' => AuthenticateWithBasicAuth::class, 'bindings' => SubstituteBindings::class, 'can' => Authorize::class, - 'guest' => RedirectIfAuthenticated::class, 'throttle' => ThrottleRequests::class, // Added for testing diff --git a/tests/TestCase.php b/tests/TestCase.php index 39f8e39b..2d2a1b13 100644 --- a/tests/TestCase.php +++ b/tests/TestCase.php @@ -10,7 +10,6 @@ use Illuminate\Support\Carbon; use Illuminate\Support\Facades\App; use Illuminate\Support\Facades\Request as FacadesRequest; -use Orchestra\Database\ConsoleServiceProvider; use Orchestra\Testbench\TestCase as OrchestraTestCase; use Osiset\ShopifyApp\Contracts\ShopModel; use Osiset\ShopifyApp\Objects\Values\Hmac; @@ -78,10 +77,8 @@ public function setUp(): void protected function getPackageProviders($app): array { - // ConsoleServiceProvider required to make migrations work return [ ShopifyAppProvider::class, - ConsoleServiceProvider::class, ]; }