From 082be5ad906bb2e99aa2aecdb2d3c26e79ca396c Mon Sep 17 00:00:00 2001 From: Claude Date: Mon, 23 Feb 2026 03:50:05 +0000 Subject: [PATCH] chore: fix pint code style and add test config Add phpunit.xml and tests/Pest.php for standalone test execution. Apply Laravel Pint formatting fixes across all source files. Co-Authored-By: Claude Opus 4.6 --- Boot.php | 6 +-- Concerns/HasContentOverrides.php | 2 +- Console/CleanupExpiredOrders.php | 2 +- Console/MatureReferralCommissions.php | 2 +- Console/PlantSubscriberTrees.php | 2 +- Console/ProcessDunning.php | 4 +- Console/RefreshExchangeRates.php | 2 +- Console/SyncUsageToStripe.php | 4 +- Controllers/Api/CommerceController.php | 10 ++--- .../Webhooks/StripeWebhookController.php | 12 +++--- Events/OrderPaid.php | 4 +- Exceptions/PauseLimitExceededException.php | 2 +- Listeners/CreateReferralCommission.php | 4 +- Listeners/ProvisionSocialHostSubscription.php | 2 +- .../RewardAgentReferralOnSubscription.php | 2 +- Mcp/Tools/UpgradePlan.php | 2 +- Middleware/CommerceMatrixGate.php | 2 +- Models/Coupon.php | 2 +- Models/Order.php | 2 +- Models/Product.php | 2 +- Models/ProductAssignment.php | 2 +- Models/Subscription.php | 4 +- Notifications/SubscriptionPaused.php | 2 +- Services/CommerceService.php | 3 +- Services/ContentOverrideService.php | 4 +- Services/CreditNoteService.php | 6 +-- Services/CurrencyService.php | 2 +- Services/DunningService.php | 4 +- Services/InvoiceService.php | 4 +- Services/PaymentGateway/StripeGateway.php | 4 +- Services/PaymentMethodService.php | 4 +- Services/ReferralService.php | 10 ++--- Services/SubscriptionService.php | 4 +- Services/TaxService.php | 6 +-- Services/UsageBillingService.php | 10 ++--- Services/WebhookLogger.php | 6 +-- Services/WebhookRateLimiter.php | 2 +- View/Modal/Admin/CouponManager.php | 4 +- View/Modal/Admin/CreditNoteManager.php | 4 +- View/Modal/Admin/ProductManager.php | 2 +- View/Modal/Admin/ReferralManager.php | 10 ++--- View/Modal/Web/ChangePlan.php | 6 +-- View/Modal/Web/CheckoutCancel.php | 4 +- View/Modal/Web/CheckoutPage.php | 14 +++---- View/Modal/Web/CheckoutSuccess.php | 6 +-- View/Modal/Web/CurrencySelector.php | 2 +- View/Modal/Web/PaymentMethods.php | 6 +-- View/Modal/Web/ReferralDashboard.php | 8 ++-- View/Modal/Web/UsageDashboard.php | 6 +-- phpunit.xml | 39 +++++++++++++++++++ routes/api.php | 2 +- tests/Feature/CheckoutFlowTest.php | 2 +- tests/Feature/ContentOverrideServiceTest.php | 2 +- tests/Feature/CurrencyServiceTest.php | 2 +- tests/Feature/DunningServiceTest.php | 4 +- .../ProcessSubscriptionRenewalTest.php | 4 +- tests/Feature/SubscriptionServiceTest.php | 2 +- tests/Feature/WebhookRateLimitTest.php | 2 +- tests/Feature/WebhookTest.php | 4 +- tests/Pest.php | 7 ++++ tests/UseCase/AdminCrudBasic.php | 3 -- 61 files changed, 167 insertions(+), 125 deletions(-) create mode 100644 phpunit.xml create mode 100644 tests/Pest.php diff --git a/Boot.php b/Boot.php index cd1b9ae..89aa105 100644 --- a/Boot.php +++ b/Boot.php @@ -8,14 +8,14 @@ use Core\Events\AdminPanelBooting; use Core\Events\ApiRoutesRegistering; use Core\Events\ConsoleBooting; use Core\Events\WebRoutesRegistering; -use Illuminate\Support\Facades\Event; -use Illuminate\Support\Facades\Route; -use Illuminate\Support\ServiceProvider; use Core\Mod\Commerce\Listeners\ProvisionSocialHostSubscription; use Core\Mod\Commerce\Listeners\RewardAgentReferralOnSubscription; use Core\Mod\Commerce\Services\PaymentGateway\BTCPayGateway; use Core\Mod\Commerce\Services\PaymentGateway\PaymentGatewayContract; use Core\Mod\Commerce\Services\PaymentGateway\StripeGateway; +use Illuminate\Support\Facades\Event; +use Illuminate\Support\Facades\Route; +use Illuminate\Support\ServiceProvider; /** * Commerce Module Boot diff --git a/Concerns/HasContentOverrides.php b/Concerns/HasContentOverrides.php index c49bf85..d0ac3f7 100644 --- a/Concerns/HasContentOverrides.php +++ b/Concerns/HasContentOverrides.php @@ -4,10 +4,10 @@ declare(strict_types=1); namespace Core\Mod\Commerce\Concerns; -use Illuminate\Database\Eloquent\Relations\MorphMany; use Core\Mod\Commerce\Models\ContentOverride; use Core\Mod\Commerce\Models\Entity; use Core\Mod\Commerce\Services\ContentOverrideService; +use Illuminate\Database\Eloquent\Relations\MorphMany; /** * Trait for models that can have content overrides. diff --git a/Console/CleanupExpiredOrders.php b/Console/CleanupExpiredOrders.php index 3fcd5d1..6b843b5 100644 --- a/Console/CleanupExpiredOrders.php +++ b/Console/CleanupExpiredOrders.php @@ -2,9 +2,9 @@ namespace Core\Mod\Commerce\Console; +use Core\Mod\Commerce\Models\Order; use Illuminate\Console\Command; use Illuminate\Support\Facades\Log; -use Core\Mod\Commerce\Models\Order; class CleanupExpiredOrders extends Command { diff --git a/Console/MatureReferralCommissions.php b/Console/MatureReferralCommissions.php index 8a0ddc2..33df106 100644 --- a/Console/MatureReferralCommissions.php +++ b/Console/MatureReferralCommissions.php @@ -4,8 +4,8 @@ declare(strict_types=1); namespace Core\Mod\Commerce\Console; -use Illuminate\Console\Command; use Core\Mod\Commerce\Services\ReferralService; +use Illuminate\Console\Command; /** * Mature referral commissions that are past their maturation date. diff --git a/Console/PlantSubscriberTrees.php b/Console/PlantSubscriberTrees.php index 2003739..36072c4 100644 --- a/Console/PlantSubscriberTrees.php +++ b/Console/PlantSubscriberTrees.php @@ -5,9 +5,9 @@ declare(strict_types=1); namespace Core\Mod\Commerce\Console; use Core\Mod\Commerce\Models\Subscription; -use Mod\Trees\Models\TreePlanting; use Illuminate\Console\Command; use Illuminate\Support\Facades\Log; +use Mod\Trees\Models\TreePlanting; /** * Plants trees for active subscribers. diff --git a/Console/ProcessDunning.php b/Console/ProcessDunning.php index ec58736..85fac5d 100644 --- a/Console/ProcessDunning.php +++ b/Console/ProcessDunning.php @@ -2,10 +2,10 @@ namespace Core\Mod\Commerce\Console; -use Illuminate\Console\Command; -use Illuminate\Support\Facades\Log; use Core\Mod\Commerce\Services\DunningService; use Core\Mod\Commerce\Services\SubscriptionService; +use Illuminate\Console\Command; +use Illuminate\Support\Facades\Log; class ProcessDunning extends Command { diff --git a/Console/RefreshExchangeRates.php b/Console/RefreshExchangeRates.php index 78fa83d..9dcbb14 100644 --- a/Console/RefreshExchangeRates.php +++ b/Console/RefreshExchangeRates.php @@ -4,8 +4,8 @@ declare(strict_types=1); namespace Core\Mod\Commerce\Console; -use Illuminate\Console\Command; use Core\Mod\Commerce\Services\CurrencyService; +use Illuminate\Console\Command; /** * Refresh exchange rates from configured provider. diff --git a/Console/SyncUsageToStripe.php b/Console/SyncUsageToStripe.php index c2849b3..4eacfee 100644 --- a/Console/SyncUsageToStripe.php +++ b/Console/SyncUsageToStripe.php @@ -2,10 +2,10 @@ namespace Core\Mod\Commerce\Console; -use Illuminate\Console\Command; -use Illuminate\Support\Facades\Log; use Core\Mod\Commerce\Models\Subscription; use Core\Mod\Commerce\Services\UsageBillingService; +use Illuminate\Console\Command; +use Illuminate\Support\Facades\Log; /** * Sync usage records to Stripe metered billing. diff --git a/Controllers/Api/CommerceController.php b/Controllers/Api/CommerceController.php index 30ca5cd..080ccee 100644 --- a/Controllers/Api/CommerceController.php +++ b/Controllers/Api/CommerceController.php @@ -5,17 +5,17 @@ declare(strict_types=1); namespace Core\Mod\Commerce\Controllers\Api; use Core\Front\Controller; -use Core\Tenant\Models\Package; -use Core\Tenant\Models\Workspace; -use Illuminate\Http\JsonResponse; -use Illuminate\Http\Request; -use Illuminate\Support\Facades\Auth; use Core\Mod\Commerce\Models\Invoice; use Core\Mod\Commerce\Models\Order; use Core\Mod\Commerce\Models\Subscription; use Core\Mod\Commerce\Services\CommerceService; use Core\Mod\Commerce\Services\InvoiceService; use Core\Mod\Commerce\Services\SubscriptionService; +use Core\Tenant\Models\Package; +use Core\Tenant\Models\Workspace; +use Illuminate\Http\JsonResponse; +use Illuminate\Http\Request; +use Illuminate\Support\Facades\Auth; /** * Commerce REST API for MCP agents and external integrations. diff --git a/Controllers/Webhooks/StripeWebhookController.php b/Controllers/Webhooks/StripeWebhookController.php index a7ef56d..9d43c93 100644 --- a/Controllers/Webhooks/StripeWebhookController.php +++ b/Controllers/Webhooks/StripeWebhookController.php @@ -6,12 +6,6 @@ namespace Core\Mod\Commerce\Controllers\Webhooks; use Carbon\Carbon; use Core\Front\Controller; -use Core\Tenant\Models\Workspace; -use Core\Tenant\Services\EntitlementService; -use Illuminate\Http\Request; -use Illuminate\Http\Response; -use Illuminate\Support\Facades\DB; -use Illuminate\Support\Facades\Log; use Core\Mod\Commerce\Models\Order; use Core\Mod\Commerce\Models\Payment; use Core\Mod\Commerce\Models\PaymentMethod; @@ -26,6 +20,12 @@ use Core\Mod\Commerce\Services\InvoiceService; use Core\Mod\Commerce\Services\PaymentGateway\StripeGateway; use Core\Mod\Commerce\Services\WebhookLogger; use Core\Mod\Commerce\Services\WebhookRateLimiter; +use Core\Tenant\Models\Workspace; +use Core\Tenant\Services\EntitlementService; +use Illuminate\Http\Request; +use Illuminate\Http\Response; +use Illuminate\Support\Facades\DB; +use Illuminate\Support\Facades\Log; /** * Handle Stripe webhooks. diff --git a/Events/OrderPaid.php b/Events/OrderPaid.php index a5f30d3..122557b 100644 --- a/Events/OrderPaid.php +++ b/Events/OrderPaid.php @@ -4,10 +4,10 @@ declare(strict_types=1); namespace Core\Mod\Commerce\Events; -use Illuminate\Foundation\Events\Dispatchable; -use Illuminate\Queue\SerializesModels; use Core\Mod\Commerce\Models\Order; use Core\Mod\Commerce\Models\Payment; +use Illuminate\Foundation\Events\Dispatchable; +use Illuminate\Queue\SerializesModels; /** * Event fired when an order is successfully paid. diff --git a/Exceptions/PauseLimitExceededException.php b/Exceptions/PauseLimitExceededException.php index 50ee4ad..5867ed7 100644 --- a/Exceptions/PauseLimitExceededException.php +++ b/Exceptions/PauseLimitExceededException.php @@ -4,8 +4,8 @@ declare(strict_types=1); namespace Core\Mod\Commerce\Exceptions; -use Exception; use Core\Mod\Commerce\Models\Subscription; +use Exception; /** * Exception thrown when a subscription has exceeded its pause cycle limit. diff --git a/Listeners/CreateReferralCommission.php b/Listeners/CreateReferralCommission.php index eef774e..75c74cc 100644 --- a/Listeners/CreateReferralCommission.php +++ b/Listeners/CreateReferralCommission.php @@ -4,10 +4,10 @@ declare(strict_types=1); namespace Core\Mod\Commerce\Listeners; -use Illuminate\Contracts\Queue\ShouldQueue; -use Illuminate\Support\Facades\Log; use Core\Mod\Commerce\Events\OrderPaid; use Core\Mod\Commerce\Services\ReferralService; +use Illuminate\Contracts\Queue\ShouldQueue; +use Illuminate\Support\Facades\Log; /** * Creates referral commission when an order is paid. diff --git a/Listeners/ProvisionSocialHostSubscription.php b/Listeners/ProvisionSocialHostSubscription.php index 0847c3c..377296c 100644 --- a/Listeners/ProvisionSocialHostSubscription.php +++ b/Listeners/ProvisionSocialHostSubscription.php @@ -2,11 +2,11 @@ namespace Core\Mod\Commerce\Listeners; -use Core\Mod\Commerce\Jobs\ProcessSubscriptionRenewal; use Core\Mod\Commerce\Events\SubscriptionCancelled; use Core\Mod\Commerce\Events\SubscriptionCreated; use Core\Mod\Commerce\Events\SubscriptionRenewed; use Core\Mod\Commerce\Events\SubscriptionUpdated; +use Core\Mod\Commerce\Jobs\ProcessSubscriptionRenewal; use Core\Tenant\Models\Package; use Core\Tenant\Models\WorkspacePackage; use Core\Tenant\Services\EntitlementService; diff --git a/Listeners/RewardAgentReferralOnSubscription.php b/Listeners/RewardAgentReferralOnSubscription.php index eed54cf..f61b56a 100644 --- a/Listeners/RewardAgentReferralOnSubscription.php +++ b/Listeners/RewardAgentReferralOnSubscription.php @@ -5,9 +5,9 @@ declare(strict_types=1); namespace Core\Mod\Commerce\Listeners; use Core\Mod\Commerce\Events\SubscriptionCreated; -use Mod\Trees\Models\TreePlanting; use Core\Tenant\Models\AgentReferralBonus; use Illuminate\Support\Facades\Log; +use Mod\Trees\Models\TreePlanting; /** * Rewards agents when their referred user subscribes. diff --git a/Mcp/Tools/UpgradePlan.php b/Mcp/Tools/UpgradePlan.php index 2c72c92..2707b50 100644 --- a/Mcp/Tools/UpgradePlan.php +++ b/Mcp/Tools/UpgradePlan.php @@ -4,8 +4,8 @@ namespace Core\Mod\Commerce\Mcp\Tools; use Core\Mod\Commerce\Models\Subscription; use Core\Mod\Commerce\Services\SubscriptionService; -use Core\Tenant\Models\Workspace; use Core\Tenant\Models\Package; +use Core\Tenant\Models\Workspace; use Illuminate\Contracts\JsonSchema\JsonSchema; use Laravel\Mcp\Request; use Laravel\Mcp\Response; diff --git a/Middleware/CommerceMatrixGate.php b/Middleware/CommerceMatrixGate.php index 51f35c8..b05af0b 100644 --- a/Middleware/CommerceMatrixGate.php +++ b/Middleware/CommerceMatrixGate.php @@ -4,9 +4,9 @@ declare(strict_types=1); namespace Core\Mod\Commerce\Middleware; +use Closure; use Core\Mod\Commerce\Models\Entity; use Core\Mod\Commerce\Services\PermissionMatrixService; -use Closure; use Illuminate\Http\Request; use Illuminate\Support\Str; use Symfony\Component\HttpFoundation\Response; diff --git a/Models/Coupon.php b/Models/Coupon.php index a7c0db1..1a1fadb 100644 --- a/Models/Coupon.php +++ b/Models/Coupon.php @@ -2,10 +2,10 @@ namespace Core\Mod\Commerce\Models; +use Core\Mod\Commerce\Contracts\Orderable; use Illuminate\Database\Eloquent\Factories\HasFactory; use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\Relations\HasMany; -use Core\Mod\Commerce\Contracts\Orderable; use Spatie\Activitylog\LogOptions; use Spatie\Activitylog\Traits\LogsActivity; diff --git a/Models/Order.php b/Models/Order.php index e4cfbcc..8630f99 100644 --- a/Models/Order.php +++ b/Models/Order.php @@ -2,6 +2,7 @@ namespace Core\Mod\Commerce\Models; +use Core\Mod\Commerce\Contracts\Orderable; use Core\Tenant\Models\User; use Core\Tenant\Models\Workspace; use Illuminate\Database\Eloquent\Factories\HasFactory; @@ -10,7 +11,6 @@ use Illuminate\Database\Eloquent\Relations\BelongsTo; use Illuminate\Database\Eloquent\Relations\HasMany; use Illuminate\Database\Eloquent\Relations\HasOne; use Illuminate\Database\Eloquent\Relations\MorphTo; -use Core\Mod\Commerce\Contracts\Orderable; use Spatie\Activitylog\LogOptions; use Spatie\Activitylog\Traits\LogsActivity; diff --git a/Models/Product.php b/Models/Product.php index 014f1ff..eb1457c 100644 --- a/Models/Product.php +++ b/Models/Product.php @@ -4,13 +4,13 @@ declare(strict_types=1); namespace Core\Mod\Commerce\Models; +use Core\Mod\Commerce\Concerns\HasContentOverrides; use Illuminate\Database\Eloquent\Factories\HasFactory; use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\Relations\BelongsTo; use Illuminate\Database\Eloquent\Relations\HasMany; use Illuminate\Database\Eloquent\SoftDeletes; use Illuminate\Support\Str; -use Core\Mod\Commerce\Concerns\HasContentOverrides; use Spatie\Activitylog\LogOptions; use Spatie\Activitylog\Traits\LogsActivity; diff --git a/Models/ProductAssignment.php b/Models/ProductAssignment.php index 1071f2f..d5dc507 100644 --- a/Models/ProductAssignment.php +++ b/Models/ProductAssignment.php @@ -4,9 +4,9 @@ declare(strict_types=1); namespace Core\Mod\Commerce\Models; +use Core\Mod\Commerce\Concerns\HasContentOverrides; use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\Relations\BelongsTo; -use Core\Mod\Commerce\Concerns\HasContentOverrides; /** * Product Assignment - Links products to M2/M3 entities. diff --git a/Models/Subscription.php b/Models/Subscription.php index 88fbd1b..b723454 100644 --- a/Models/Subscription.php +++ b/Models/Subscription.php @@ -2,14 +2,14 @@ namespace Core\Mod\Commerce\Models; +use Core\Mod\Commerce\Events\SubscriptionCreated; +use Core\Mod\Commerce\Events\SubscriptionUpdated; use Core\Tenant\Models\Workspace; use Core\Tenant\Models\WorkspacePackage; use Illuminate\Database\Eloquent\Factories\HasFactory; use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\Relations\BelongsTo; use Illuminate\Database\Eloquent\Relations\HasMany; -use Core\Mod\Commerce\Events\SubscriptionCreated; -use Core\Mod\Commerce\Events\SubscriptionUpdated; use Spatie\Activitylog\LogOptions; use Spatie\Activitylog\Traits\LogsActivity; diff --git a/Notifications/SubscriptionPaused.php b/Notifications/SubscriptionPaused.php index 2710210..b51dab6 100644 --- a/Notifications/SubscriptionPaused.php +++ b/Notifications/SubscriptionPaused.php @@ -2,11 +2,11 @@ namespace Core\Mod\Commerce\Notifications; +use Core\Mod\Commerce\Models\Subscription; use Illuminate\Bus\Queueable; use Illuminate\Contracts\Queue\ShouldQueue; use Illuminate\Notifications\Messages\MailMessage; use Illuminate\Notifications\Notification; -use Core\Mod\Commerce\Models\Subscription; class SubscriptionPaused extends Notification implements ShouldQueue { diff --git a/Services/CommerceService.php b/Services/CommerceService.php index 6f0537a..fc83128 100644 --- a/Services/CommerceService.php +++ b/Services/CommerceService.php @@ -184,11 +184,10 @@ class CommerceService * also applies rate limiting. * * @param Request|null $request The HTTP request for rate limiting (auto-resolved if null) + * @return array{order: Order, session_id: string, checkout_url: string, fraud_assessment?: FraudAssessment} * * @throws CheckoutRateLimitException When rate limit is exceeded * @throws FraudBlockedException When order is blocked due to high fraud risk - * - * @return array{order: Order, session_id: string, checkout_url: string, fraud_assessment?: FraudAssessment} */ public function createCheckout( Order $order, diff --git a/Services/ContentOverrideService.php b/Services/ContentOverrideService.php index 7b61140..935545e 100644 --- a/Services/ContentOverrideService.php +++ b/Services/ContentOverrideService.php @@ -4,10 +4,10 @@ declare(strict_types=1); namespace Core\Mod\Commerce\Services; -use Illuminate\Database\Eloquent\Model; -use Illuminate\Support\Collection; use Core\Mod\Commerce\Models\ContentOverride; use Core\Mod\Commerce\Models\Entity; +use Illuminate\Database\Eloquent\Model; +use Illuminate\Support\Collection; /** * Content Override Service - Sparse override resolution for white-label commerce. diff --git a/Services/CreditNoteService.php b/Services/CreditNoteService.php index 3ea979f..6f30743 100644 --- a/Services/CreditNoteService.php +++ b/Services/CreditNoteService.php @@ -2,14 +2,14 @@ namespace Core\Mod\Commerce\Services; +use Core\Mod\Commerce\Models\CreditNote; +use Core\Mod\Commerce\Models\Order; +use Core\Mod\Commerce\Models\Refund; use Core\Tenant\Models\User; use Core\Tenant\Models\Workspace; use Illuminate\Database\Eloquent\Collection; use Illuminate\Support\Facades\DB; use Illuminate\Support\Facades\Log; -use Core\Mod\Commerce\Models\CreditNote; -use Core\Mod\Commerce\Models\Order; -use Core\Mod\Commerce\Models\Refund; class CreditNoteService { diff --git a/Services/CurrencyService.php b/Services/CurrencyService.php index 977a33c..92b70ac 100644 --- a/Services/CurrencyService.php +++ b/Services/CurrencyService.php @@ -4,11 +4,11 @@ declare(strict_types=1); namespace Core\Mod\Commerce\Services; +use Core\Mod\Commerce\Models\ExchangeRate; use Illuminate\Http\Request; use Illuminate\Support\Facades\Http; use Illuminate\Support\Facades\Log; use Illuminate\Support\Facades\Session; -use Core\Mod\Commerce\Models\ExchangeRate; /** * Currency service for multi-currency support. diff --git a/Services/DunningService.php b/Services/DunningService.php index 2fd4b18..64b50be 100644 --- a/Services/DunningService.php +++ b/Services/DunningService.php @@ -3,8 +3,6 @@ namespace Core\Mod\Commerce\Services; use Carbon\Carbon; -use Illuminate\Support\Collection; -use Illuminate\Support\Facades\Log; use Core\Mod\Commerce\Models\Invoice; use Core\Mod\Commerce\Models\Subscription; use Core\Mod\Commerce\Notifications\AccountSuspended; @@ -13,6 +11,8 @@ use Core\Mod\Commerce\Notifications\PaymentRetry; use Core\Mod\Commerce\Notifications\SubscriptionCancelled; use Core\Mod\Commerce\Notifications\SubscriptionPaused; use Core\Tenant\Services\EntitlementService; +use Illuminate\Support\Collection; +use Illuminate\Support\Facades\Log; /** * Dunning service for failed payment recovery. diff --git a/Services/InvoiceService.php b/Services/InvoiceService.php index 2659f12..25e50b2 100644 --- a/Services/InvoiceService.php +++ b/Services/InvoiceService.php @@ -3,14 +3,14 @@ namespace Core\Mod\Commerce\Services; use Barryvdh\DomPDF\Facade\Pdf; -use Illuminate\Support\Facades\Mail; -use Illuminate\Support\Facades\Storage; use Core\Mod\Commerce\Mail\InvoiceGenerated; use Core\Mod\Commerce\Models\Invoice; use Core\Mod\Commerce\Models\InvoiceItem; use Core\Mod\Commerce\Models\Order; use Core\Mod\Commerce\Models\Payment; use Core\Tenant\Models\Workspace; +use Illuminate\Support\Facades\Mail; +use Illuminate\Support\Facades\Storage; /** * Invoice generation and management service. diff --git a/Services/PaymentGateway/StripeGateway.php b/Services/PaymentGateway/StripeGateway.php index f0276b8..956596d 100644 --- a/Services/PaymentGateway/StripeGateway.php +++ b/Services/PaymentGateway/StripeGateway.php @@ -2,13 +2,13 @@ namespace Core\Mod\Commerce\Services\PaymentGateway; -use Core\Tenant\Models\Workspace; -use Illuminate\Support\Facades\Log; use Core\Mod\Commerce\Models\Order; use Core\Mod\Commerce\Models\Payment; use Core\Mod\Commerce\Models\PaymentMethod; use Core\Mod\Commerce\Models\Refund; use Core\Mod\Commerce\Models\Subscription; +use Core\Tenant\Models\Workspace; +use Illuminate\Support\Facades\Log; use Stripe\StripeClient; /** diff --git a/Services/PaymentMethodService.php b/Services/PaymentMethodService.php index 6f8e78f..172f10c 100644 --- a/Services/PaymentMethodService.php +++ b/Services/PaymentMethodService.php @@ -2,13 +2,13 @@ namespace Core\Mod\Commerce\Services; +use Core\Mod\Commerce\Models\PaymentMethod; +use Core\Mod\Commerce\Services\PaymentGateway\StripeGateway; use Core\Tenant\Models\User; use Core\Tenant\Models\Workspace; use Illuminate\Support\Collection; use Illuminate\Support\Facades\DB; use Illuminate\Support\Facades\Log; -use Core\Mod\Commerce\Models\PaymentMethod; -use Core\Mod\Commerce\Services\PaymentGateway\StripeGateway; /** * Service for managing payment methods. diff --git a/Services/ReferralService.php b/Services/ReferralService.php index 3feab2d..e4edf5f 100644 --- a/Services/ReferralService.php +++ b/Services/ReferralService.php @@ -4,16 +4,16 @@ declare(strict_types=1); namespace Core\Mod\Commerce\Services; -use Core\Tenant\Models\User; -use Mod\Bio\Models\Page; -use Illuminate\Support\Facades\DB; -use Illuminate\Support\Facades\Log; -use Illuminate\Support\Str; use Core\Mod\Commerce\Models\Order; use Core\Mod\Commerce\Models\Referral; use Core\Mod\Commerce\Models\ReferralCode; use Core\Mod\Commerce\Models\ReferralCommission; use Core\Mod\Commerce\Models\ReferralPayout; +use Core\Tenant\Models\User; +use Illuminate\Support\Facades\DB; +use Illuminate\Support\Facades\Log; +use Illuminate\Support\Str; +use Mod\Bio\Models\Page; /** * Service for managing referrals and affiliate commissions. diff --git a/Services/SubscriptionService.php b/Services/SubscriptionService.php index 29164fc..eba812e 100644 --- a/Services/SubscriptionService.php +++ b/Services/SubscriptionService.php @@ -3,14 +3,14 @@ namespace Core\Mod\Commerce\Services; use Carbon\Carbon; -use Illuminate\Support\Facades\DB; -use Illuminate\Support\Facades\Log; use Core\Mod\Commerce\Exceptions\PauseLimitExceededException; use Core\Mod\Commerce\Models\Subscription; use Core\Tenant\Models\Package; use Core\Tenant\Models\Workspace; use Core\Tenant\Models\WorkspacePackage; use Core\Tenant\Services\EntitlementService; +use Illuminate\Support\Facades\DB; +use Illuminate\Support\Facades\Log; class SubscriptionService { diff --git a/Services/TaxService.php b/Services/TaxService.php index 30d024d..e8b9a9a 100644 --- a/Services/TaxService.php +++ b/Services/TaxService.php @@ -2,12 +2,12 @@ namespace Core\Mod\Commerce\Services; -use Illuminate\Support\Facades\Cache; -use Illuminate\Support\Facades\Http; -use Illuminate\Support\Facades\Log; use Core\Mod\Commerce\Contracts\Orderable; use Core\Mod\Commerce\Models\TaxRate; use Core\Tenant\Models\Workspace; +use Illuminate\Support\Facades\Cache; +use Illuminate\Support\Facades\Http; +use Illuminate\Support\Facades\Log; /** * Tax calculation service. diff --git a/Services/UsageBillingService.php b/Services/UsageBillingService.php index cddcd04..daa8ca7 100644 --- a/Services/UsageBillingService.php +++ b/Services/UsageBillingService.php @@ -3,11 +3,6 @@ namespace Core\Mod\Commerce\Services; use Carbon\Carbon; -use Core\Tenant\Models\User; -use Core\Tenant\Models\Workspace; -use Illuminate\Support\Collection; -use Illuminate\Support\Facades\DB; -use Illuminate\Support\Facades\Log; use Core\Mod\Commerce\Models\Invoice; use Core\Mod\Commerce\Models\InvoiceItem; use Core\Mod\Commerce\Models\Subscription; @@ -15,6 +10,11 @@ use Core\Mod\Commerce\Models\SubscriptionUsage; use Core\Mod\Commerce\Models\UsageEvent; use Core\Mod\Commerce\Models\UsageMeter; use Core\Mod\Commerce\Services\PaymentGateway\StripeGateway; +use Core\Tenant\Models\User; +use Core\Tenant\Models\Workspace; +use Illuminate\Support\Collection; +use Illuminate\Support\Facades\DB; +use Illuminate\Support\Facades\Log; /** * Usage-based billing service. diff --git a/Services/WebhookLogger.php b/Services/WebhookLogger.php index 97ff808..93f99b8 100644 --- a/Services/WebhookLogger.php +++ b/Services/WebhookLogger.php @@ -4,13 +4,13 @@ declare(strict_types=1); namespace Core\Mod\Commerce\Services; +use Core\Mod\Commerce\Models\Order; +use Core\Mod\Commerce\Models\Subscription; +use Core\Mod\Commerce\Models\WebhookEvent; use Illuminate\Database\QueryException; use Illuminate\Http\Request; use Illuminate\Http\Response; use Illuminate\Support\Facades\Log; -use Core\Mod\Commerce\Models\Order; -use Core\Mod\Commerce\Models\Subscription; -use Core\Mod\Commerce\Models\WebhookEvent; /** * Service for logging webhook events from payment gateways. diff --git a/Services/WebhookRateLimiter.php b/Services/WebhookRateLimiter.php index 63fff91..3aa6c3b 100644 --- a/Services/WebhookRateLimiter.php +++ b/Services/WebhookRateLimiter.php @@ -206,7 +206,7 @@ class WebhookRateLimiter // Build a bitmask from the prefix length $maskBinary = str_repeat("\xff", (int) ($mask / 8)); if ($mask % 8) { - $maskBinary .= chr(0xff << (8 - ($mask % 8))); + $maskBinary .= chr(0xFF << (8 - ($mask % 8))); } $maskBinary = str_pad($maskBinary, 16, "\x00"); diff --git a/View/Modal/Admin/CouponManager.php b/View/Modal/Admin/CouponManager.php index 5db8eac..bae5c74 100644 --- a/View/Modal/Admin/CouponManager.php +++ b/View/Modal/Admin/CouponManager.php @@ -4,14 +4,14 @@ declare(strict_types=1); namespace Core\Mod\Commerce\View\Modal\Admin; +use Core\Mod\Commerce\Models\Coupon; +use Core\Mod\Commerce\Services\CouponService; use Core\Tenant\Models\Package; use Livewire\Attributes\Computed; use Livewire\Attributes\Layout; use Livewire\Attributes\Title; use Livewire\Component; use Livewire\WithPagination; -use Core\Mod\Commerce\Models\Coupon; -use Core\Mod\Commerce\Services\CouponService; #[Layout('hub::admin.layouts.app')] #[Title('Coupons')] diff --git a/View/Modal/Admin/CreditNoteManager.php b/View/Modal/Admin/CreditNoteManager.php index a04591f..17ec245 100644 --- a/View/Modal/Admin/CreditNoteManager.php +++ b/View/Modal/Admin/CreditNoteManager.php @@ -4,14 +4,14 @@ declare(strict_types=1); namespace Core\Mod\Commerce\View\Modal\Admin; +use Core\Mod\Commerce\Models\CreditNote; +use Core\Mod\Commerce\Services\CreditNoteService; use Core\Tenant\Models\User; use Core\Tenant\Models\Workspace; use Livewire\Attributes\Computed; use Livewire\Attributes\Title; use Livewire\Component; use Livewire\WithPagination; -use Core\Mod\Commerce\Models\CreditNote; -use Core\Mod\Commerce\Services\CreditNoteService; #[Title('Credit Notes')] class CreditNoteManager extends Component diff --git a/View/Modal/Admin/ProductManager.php b/View/Modal/Admin/ProductManager.php index 89e3f40..27d41d4 100644 --- a/View/Modal/Admin/ProductManager.php +++ b/View/Modal/Admin/ProductManager.php @@ -10,8 +10,8 @@ use Core\Mod\Commerce\Models\ProductAssignment; use Core\Mod\Commerce\Services\ProductCatalogService; use Illuminate\Contracts\View\View; use Livewire\Attributes\Computed; -use Livewire\Attributes\Url; use Livewire\Attributes\Layout; +use Livewire\Attributes\Url; use Livewire\Component; use Livewire\WithPagination; diff --git a/View/Modal/Admin/ReferralManager.php b/View/Modal/Admin/ReferralManager.php index bf41f20..efd90b5 100644 --- a/View/Modal/Admin/ReferralManager.php +++ b/View/Modal/Admin/ReferralManager.php @@ -4,16 +4,16 @@ declare(strict_types=1); namespace Core\Mod\Commerce\View\Modal\Admin; -use Livewire\Attributes\Computed; -use Livewire\Attributes\Layout; -use Livewire\Attributes\Title; -use Livewire\Component; -use Livewire\WithPagination; use Core\Mod\Commerce\Models\Referral; use Core\Mod\Commerce\Models\ReferralCode; use Core\Mod\Commerce\Models\ReferralCommission; use Core\Mod\Commerce\Models\ReferralPayout; use Core\Mod\Commerce\Services\ReferralService; +use Livewire\Attributes\Computed; +use Livewire\Attributes\Layout; +use Livewire\Attributes\Title; +use Livewire\Component; +use Livewire\WithPagination; /** * Admin dashboard for managing referrals, commissions, and payouts. diff --git a/View/Modal/Web/ChangePlan.php b/View/Modal/Web/ChangePlan.php index 5fbad54..5e9ed63 100644 --- a/View/Modal/Web/ChangePlan.php +++ b/View/Modal/Web/ChangePlan.php @@ -2,15 +2,15 @@ namespace Core\Mod\Commerce\View\Modal\Web; +use Core\Mod\Commerce\Models\Subscription; +use Core\Mod\Commerce\Services\CommerceService; +use Core\Mod\Commerce\Services\SubscriptionService; use Core\Tenant\Models\Package; use Core\Tenant\Models\Workspace; use Illuminate\Support\Collection; use Illuminate\Support\Facades\Auth; use Livewire\Attributes\Layout; use Livewire\Component; -use Core\Mod\Commerce\Models\Subscription; -use Core\Mod\Commerce\Services\CommerceService; -use Core\Mod\Commerce\Services\SubscriptionService; /** * Plan change UI for upgrading or downgrading subscriptions. diff --git a/View/Modal/Web/CheckoutCancel.php b/View/Modal/Web/CheckoutCancel.php index 6aabdd1..cca8c17 100644 --- a/View/Modal/Web/CheckoutCancel.php +++ b/View/Modal/Web/CheckoutCancel.php @@ -2,11 +2,11 @@ namespace Core\Mod\Commerce\View\Modal\Web; +use Core\Mod\Commerce\Models\Order; +use Core\Tenant\Models\User; use Illuminate\Support\Facades\Auth; use Livewire\Attributes\Layout; use Livewire\Component; -use Core\Mod\Commerce\Models\Order; -use Core\Tenant\Models\User; #[Layout('shared::layouts.checkout')] class CheckoutCancel extends Component diff --git a/View/Modal/Web/CheckoutPage.php b/View/Modal/Web/CheckoutPage.php index c2f36af..bf31f41 100644 --- a/View/Modal/Web/CheckoutPage.php +++ b/View/Modal/Web/CheckoutPage.php @@ -2,13 +2,6 @@ namespace Core\Mod\Commerce\View\Modal\Web; -use Core\Tenant\Models\Package; -use Core\Tenant\Models\Workspace; -use Illuminate\Support\Facades\Auth; -use Livewire\Attributes\Computed; -use Livewire\Attributes\Layout; -use Livewire\Attributes\Url; -use Livewire\Component; use Core\Mod\Commerce\Models\Coupon; use Core\Mod\Commerce\Models\ExchangeRate; use Core\Mod\Commerce\Models\Order; @@ -17,6 +10,13 @@ use Core\Mod\Commerce\Services\CommerceService; use Core\Mod\Commerce\Services\CouponService; use Core\Mod\Commerce\Services\CurrencyService; use Core\Mod\Commerce\Services\TaxService; +use Core\Tenant\Models\Package; +use Core\Tenant\Models\Workspace; +use Illuminate\Support\Facades\Auth; +use Livewire\Attributes\Computed; +use Livewire\Attributes\Layout; +use Livewire\Attributes\Url; +use Livewire\Component; #[Layout('shared::layouts.checkout')] class CheckoutPage extends Component diff --git a/View/Modal/Web/CheckoutSuccess.php b/View/Modal/Web/CheckoutSuccess.php index 7215097..0b925ce 100644 --- a/View/Modal/Web/CheckoutSuccess.php +++ b/View/Modal/Web/CheckoutSuccess.php @@ -2,6 +2,9 @@ namespace Core\Mod\Commerce\View\Modal\Web; +use Core\Mod\Commerce\Models\Order; +use Core\Tenant\Models\User; +use Core\Tenant\Models\Workspace; use Illuminate\Auth\Events\Registered; use Illuminate\Support\Facades\Auth; use Illuminate\Support\Facades\DB; @@ -9,9 +12,6 @@ use Illuminate\Support\Facades\Hash; use Livewire\Attributes\Layout; use Livewire\Attributes\Validate; use Livewire\Component; -use Core\Mod\Commerce\Models\Order; -use Core\Tenant\Models\User; -use Core\Tenant\Models\Workspace; #[Layout('shared::layouts.checkout')] class CheckoutSuccess extends Component diff --git a/View/Modal/Web/CurrencySelector.php b/View/Modal/Web/CurrencySelector.php index a0f2177..f7c2036 100644 --- a/View/Modal/Web/CurrencySelector.php +++ b/View/Modal/Web/CurrencySelector.php @@ -4,9 +4,9 @@ declare(strict_types=1); namespace Core\Mod\Commerce\View\Modal\Web; +use Core\Mod\Commerce\Services\CurrencyService; use Livewire\Attributes\Computed; use Livewire\Component; -use Core\Mod\Commerce\Services\CurrencyService; /** * Currency selector component. diff --git a/View/Modal/Web/PaymentMethods.php b/View/Modal/Web/PaymentMethods.php index 29b1b79..5405909 100644 --- a/View/Modal/Web/PaymentMethods.php +++ b/View/Modal/Web/PaymentMethods.php @@ -2,14 +2,14 @@ namespace Core\Mod\Commerce\View\Modal\Web; +use Core\Mod\Commerce\Models\PaymentMethod; +use Core\Mod\Commerce\Services\PaymentGateway\StripeGateway; +use Core\Mod\Commerce\Services\PaymentMethodService; use Core\Tenant\Models\Workspace; use Illuminate\Support\Collection; use Illuminate\Support\Facades\Auth; use Livewire\Attributes\Layout; use Livewire\Component; -use Core\Mod\Commerce\Models\PaymentMethod; -use Core\Mod\Commerce\Services\PaymentGateway\StripeGateway; -use Core\Mod\Commerce\Services\PaymentMethodService; #[Layout('hub::admin.layouts.app')] class PaymentMethods extends Component diff --git a/View/Modal/Web/ReferralDashboard.php b/View/Modal/Web/ReferralDashboard.php index 331decc..1eb2a03 100644 --- a/View/Modal/Web/ReferralDashboard.php +++ b/View/Modal/Web/ReferralDashboard.php @@ -4,15 +4,15 @@ declare(strict_types=1); namespace Core\Mod\Commerce\View\Modal\Web; +use Core\Mod\Commerce\Models\Referral; +use Core\Mod\Commerce\Models\ReferralCommission; +use Core\Mod\Commerce\Models\ReferralPayout; +use Core\Mod\Commerce\Services\ReferralService; use Livewire\Attributes\Computed; use Livewire\Attributes\Layout; use Livewire\Attributes\Title; use Livewire\Component; use Livewire\WithPagination; -use Core\Mod\Commerce\Models\Referral; -use Core\Mod\Commerce\Models\ReferralCommission; -use Core\Mod\Commerce\Models\ReferralPayout; -use Core\Mod\Commerce\Services\ReferralService; /** * User-facing referral dashboard showing earnings and referrals. diff --git a/View/Modal/Web/UsageDashboard.php b/View/Modal/Web/UsageDashboard.php index 89dea49..d140887 100644 --- a/View/Modal/Web/UsageDashboard.php +++ b/View/Modal/Web/UsageDashboard.php @@ -2,13 +2,13 @@ namespace Core\Mod\Commerce\View\Modal\Web; +use Core\Mod\Commerce\Models\Subscription; +use Core\Mod\Commerce\Services\CommerceService; +use Core\Mod\Commerce\Services\UsageBillingService; use Core\Tenant\Models\Workspace; use Illuminate\Support\Collection; use Illuminate\Support\Facades\Auth; use Livewire\Component; -use Core\Mod\Commerce\Models\Subscription; -use Core\Mod\Commerce\Services\CommerceService; -use Core\Mod\Commerce\Services\UsageBillingService; /** * Usage Dashboard component. diff --git a/phpunit.xml b/phpunit.xml new file mode 100644 index 0000000..cb23fe0 --- /dev/null +++ b/phpunit.xml @@ -0,0 +1,39 @@ + + + + + tests/Feature + + + tests/Unit + + + + + src + + + + + + + + + + + + + + + + diff --git a/routes/api.php b/routes/api.php index c06144d..23d1b63 100644 --- a/routes/api.php +++ b/routes/api.php @@ -2,10 +2,10 @@ declare(strict_types=1); -use Illuminate\Support\Facades\Route; use Core\Mod\Commerce\Controllers\Api\CommerceController; use Core\Mod\Commerce\Controllers\Webhooks\BTCPayWebhookController; use Core\Mod\Commerce\Controllers\Webhooks\StripeWebhookController; +use Illuminate\Support\Facades\Route; /* |-------------------------------------------------------------------------- diff --git a/tests/Feature/CheckoutFlowTest.php b/tests/Feature/CheckoutFlowTest.php index 9d68cc7..60f6ec5 100644 --- a/tests/Feature/CheckoutFlowTest.php +++ b/tests/Feature/CheckoutFlowTest.php @@ -1,6 +1,5 @@ shouldReceive('verifyWebhookSignature')->andReturn(true); diff --git a/tests/Pest.php b/tests/Pest.php new file mode 100644 index 0000000..7f6d8cf --- /dev/null +++ b/tests/Pest.php @@ -0,0 +1,7 @@ +in('Feature', 'Unit'); diff --git a/tests/UseCase/AdminCrudBasic.php b/tests/UseCase/AdminCrudBasic.php index 7004b98..a6dad0a 100644 --- a/tests/UseCase/AdminCrudBasic.php +++ b/tests/UseCase/AdminCrudBasic.php @@ -7,9 +7,6 @@ * Tests the happy path user journey for products, orders, and subscriptions. */ -use Core\Mod\Commerce\Models\Order; -use Core\Mod\Commerce\Models\Product; -use Core\Mod\Commerce\Models\Subscription; use Core\Tenant\Models\User; use Core\Tenant\Models\Workspace;