chore: fix pint code style and add test config
Some checks failed
CI / tests (push) Failing after 1m25s

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 <noreply@anthropic.com>
This commit is contained in:
Claude 2026-02-23 03:50:05 +00:00
parent 3246ffe7af
commit 082be5ad90
No known key found for this signature in database
GPG key ID: AF404715446AEB41
61 changed files with 167 additions and 125 deletions

View file

@ -8,14 +8,14 @@ use Core\Events\AdminPanelBooting;
use Core\Events\ApiRoutesRegistering; use Core\Events\ApiRoutesRegistering;
use Core\Events\ConsoleBooting; use Core\Events\ConsoleBooting;
use Core\Events\WebRoutesRegistering; 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\ProvisionSocialHostSubscription;
use Core\Mod\Commerce\Listeners\RewardAgentReferralOnSubscription; use Core\Mod\Commerce\Listeners\RewardAgentReferralOnSubscription;
use Core\Mod\Commerce\Services\PaymentGateway\BTCPayGateway; use Core\Mod\Commerce\Services\PaymentGateway\BTCPayGateway;
use Core\Mod\Commerce\Services\PaymentGateway\PaymentGatewayContract; use Core\Mod\Commerce\Services\PaymentGateway\PaymentGatewayContract;
use Core\Mod\Commerce\Services\PaymentGateway\StripeGateway; use Core\Mod\Commerce\Services\PaymentGateway\StripeGateway;
use Illuminate\Support\Facades\Event;
use Illuminate\Support\Facades\Route;
use Illuminate\Support\ServiceProvider;
/** /**
* Commerce Module Boot * Commerce Module Boot

View file

@ -4,10 +4,10 @@ declare(strict_types=1);
namespace Core\Mod\Commerce\Concerns; namespace Core\Mod\Commerce\Concerns;
use Illuminate\Database\Eloquent\Relations\MorphMany;
use Core\Mod\Commerce\Models\ContentOverride; use Core\Mod\Commerce\Models\ContentOverride;
use Core\Mod\Commerce\Models\Entity; use Core\Mod\Commerce\Models\Entity;
use Core\Mod\Commerce\Services\ContentOverrideService; use Core\Mod\Commerce\Services\ContentOverrideService;
use Illuminate\Database\Eloquent\Relations\MorphMany;
/** /**
* Trait for models that can have content overrides. * Trait for models that can have content overrides.

View file

@ -2,9 +2,9 @@
namespace Core\Mod\Commerce\Console; namespace Core\Mod\Commerce\Console;
use Core\Mod\Commerce\Models\Order;
use Illuminate\Console\Command; use Illuminate\Console\Command;
use Illuminate\Support\Facades\Log; use Illuminate\Support\Facades\Log;
use Core\Mod\Commerce\Models\Order;
class CleanupExpiredOrders extends Command class CleanupExpiredOrders extends Command
{ {

View file

@ -4,8 +4,8 @@ declare(strict_types=1);
namespace Core\Mod\Commerce\Console; namespace Core\Mod\Commerce\Console;
use Illuminate\Console\Command;
use Core\Mod\Commerce\Services\ReferralService; use Core\Mod\Commerce\Services\ReferralService;
use Illuminate\Console\Command;
/** /**
* Mature referral commissions that are past their maturation date. * Mature referral commissions that are past their maturation date.

View file

@ -5,9 +5,9 @@ declare(strict_types=1);
namespace Core\Mod\Commerce\Console; namespace Core\Mod\Commerce\Console;
use Core\Mod\Commerce\Models\Subscription; use Core\Mod\Commerce\Models\Subscription;
use Mod\Trees\Models\TreePlanting;
use Illuminate\Console\Command; use Illuminate\Console\Command;
use Illuminate\Support\Facades\Log; use Illuminate\Support\Facades\Log;
use Mod\Trees\Models\TreePlanting;
/** /**
* Plants trees for active subscribers. * Plants trees for active subscribers.

View file

@ -2,10 +2,10 @@
namespace Core\Mod\Commerce\Console; 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\DunningService;
use Core\Mod\Commerce\Services\SubscriptionService; use Core\Mod\Commerce\Services\SubscriptionService;
use Illuminate\Console\Command;
use Illuminate\Support\Facades\Log;
class ProcessDunning extends Command class ProcessDunning extends Command
{ {

View file

@ -4,8 +4,8 @@ declare(strict_types=1);
namespace Core\Mod\Commerce\Console; namespace Core\Mod\Commerce\Console;
use Illuminate\Console\Command;
use Core\Mod\Commerce\Services\CurrencyService; use Core\Mod\Commerce\Services\CurrencyService;
use Illuminate\Console\Command;
/** /**
* Refresh exchange rates from configured provider. * Refresh exchange rates from configured provider.

View file

@ -2,10 +2,10 @@
namespace Core\Mod\Commerce\Console; namespace Core\Mod\Commerce\Console;
use Illuminate\Console\Command;
use Illuminate\Support\Facades\Log;
use Core\Mod\Commerce\Models\Subscription; use Core\Mod\Commerce\Models\Subscription;
use Core\Mod\Commerce\Services\UsageBillingService; use Core\Mod\Commerce\Services\UsageBillingService;
use Illuminate\Console\Command;
use Illuminate\Support\Facades\Log;
/** /**
* Sync usage records to Stripe metered billing. * Sync usage records to Stripe metered billing.

View file

@ -5,17 +5,17 @@ declare(strict_types=1);
namespace Core\Mod\Commerce\Controllers\Api; namespace Core\Mod\Commerce\Controllers\Api;
use Core\Front\Controller; 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\Invoice;
use Core\Mod\Commerce\Models\Order; use Core\Mod\Commerce\Models\Order;
use Core\Mod\Commerce\Models\Subscription; use Core\Mod\Commerce\Models\Subscription;
use Core\Mod\Commerce\Services\CommerceService; use Core\Mod\Commerce\Services\CommerceService;
use Core\Mod\Commerce\Services\InvoiceService; use Core\Mod\Commerce\Services\InvoiceService;
use Core\Mod\Commerce\Services\SubscriptionService; 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. * Commerce REST API for MCP agents and external integrations.

View file

@ -6,12 +6,6 @@ namespace Core\Mod\Commerce\Controllers\Webhooks;
use Carbon\Carbon; use Carbon\Carbon;
use Core\Front\Controller; 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\Order;
use Core\Mod\Commerce\Models\Payment; use Core\Mod\Commerce\Models\Payment;
use Core\Mod\Commerce\Models\PaymentMethod; 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\PaymentGateway\StripeGateway;
use Core\Mod\Commerce\Services\WebhookLogger; use Core\Mod\Commerce\Services\WebhookLogger;
use Core\Mod\Commerce\Services\WebhookRateLimiter; 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. * Handle Stripe webhooks.

View file

@ -4,10 +4,10 @@ declare(strict_types=1);
namespace Core\Mod\Commerce\Events; 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\Order;
use Core\Mod\Commerce\Models\Payment; use Core\Mod\Commerce\Models\Payment;
use Illuminate\Foundation\Events\Dispatchable;
use Illuminate\Queue\SerializesModels;
/** /**
* Event fired when an order is successfully paid. * Event fired when an order is successfully paid.

View file

@ -4,8 +4,8 @@ declare(strict_types=1);
namespace Core\Mod\Commerce\Exceptions; namespace Core\Mod\Commerce\Exceptions;
use Exception;
use Core\Mod\Commerce\Models\Subscription; use Core\Mod\Commerce\Models\Subscription;
use Exception;
/** /**
* Exception thrown when a subscription has exceeded its pause cycle limit. * Exception thrown when a subscription has exceeded its pause cycle limit.

View file

@ -4,10 +4,10 @@ declare(strict_types=1);
namespace Core\Mod\Commerce\Listeners; 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\Events\OrderPaid;
use Core\Mod\Commerce\Services\ReferralService; use Core\Mod\Commerce\Services\ReferralService;
use Illuminate\Contracts\Queue\ShouldQueue;
use Illuminate\Support\Facades\Log;
/** /**
* Creates referral commission when an order is paid. * Creates referral commission when an order is paid.

View file

@ -2,11 +2,11 @@
namespace Core\Mod\Commerce\Listeners; namespace Core\Mod\Commerce\Listeners;
use Core\Mod\Commerce\Jobs\ProcessSubscriptionRenewal;
use Core\Mod\Commerce\Events\SubscriptionCancelled; use Core\Mod\Commerce\Events\SubscriptionCancelled;
use Core\Mod\Commerce\Events\SubscriptionCreated; use Core\Mod\Commerce\Events\SubscriptionCreated;
use Core\Mod\Commerce\Events\SubscriptionRenewed; use Core\Mod\Commerce\Events\SubscriptionRenewed;
use Core\Mod\Commerce\Events\SubscriptionUpdated; use Core\Mod\Commerce\Events\SubscriptionUpdated;
use Core\Mod\Commerce\Jobs\ProcessSubscriptionRenewal;
use Core\Tenant\Models\Package; use Core\Tenant\Models\Package;
use Core\Tenant\Models\WorkspacePackage; use Core\Tenant\Models\WorkspacePackage;
use Core\Tenant\Services\EntitlementService; use Core\Tenant\Services\EntitlementService;

View file

@ -5,9 +5,9 @@ declare(strict_types=1);
namespace Core\Mod\Commerce\Listeners; namespace Core\Mod\Commerce\Listeners;
use Core\Mod\Commerce\Events\SubscriptionCreated; use Core\Mod\Commerce\Events\SubscriptionCreated;
use Mod\Trees\Models\TreePlanting;
use Core\Tenant\Models\AgentReferralBonus; use Core\Tenant\Models\AgentReferralBonus;
use Illuminate\Support\Facades\Log; use Illuminate\Support\Facades\Log;
use Mod\Trees\Models\TreePlanting;
/** /**
* Rewards agents when their referred user subscribes. * Rewards agents when their referred user subscribes.

View file

@ -4,8 +4,8 @@ namespace Core\Mod\Commerce\Mcp\Tools;
use Core\Mod\Commerce\Models\Subscription; use Core\Mod\Commerce\Models\Subscription;
use Core\Mod\Commerce\Services\SubscriptionService; use Core\Mod\Commerce\Services\SubscriptionService;
use Core\Tenant\Models\Workspace;
use Core\Tenant\Models\Package; use Core\Tenant\Models\Package;
use Core\Tenant\Models\Workspace;
use Illuminate\Contracts\JsonSchema\JsonSchema; use Illuminate\Contracts\JsonSchema\JsonSchema;
use Laravel\Mcp\Request; use Laravel\Mcp\Request;
use Laravel\Mcp\Response; use Laravel\Mcp\Response;

View file

@ -4,9 +4,9 @@ declare(strict_types=1);
namespace Core\Mod\Commerce\Middleware; namespace Core\Mod\Commerce\Middleware;
use Closure;
use Core\Mod\Commerce\Models\Entity; use Core\Mod\Commerce\Models\Entity;
use Core\Mod\Commerce\Services\PermissionMatrixService; use Core\Mod\Commerce\Services\PermissionMatrixService;
use Closure;
use Illuminate\Http\Request; use Illuminate\Http\Request;
use Illuminate\Support\Str; use Illuminate\Support\Str;
use Symfony\Component\HttpFoundation\Response; use Symfony\Component\HttpFoundation\Response;

View file

@ -2,10 +2,10 @@
namespace Core\Mod\Commerce\Models; namespace Core\Mod\Commerce\Models;
use Core\Mod\Commerce\Contracts\Orderable;
use Illuminate\Database\Eloquent\Factories\HasFactory; use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\Relations\HasMany; use Illuminate\Database\Eloquent\Relations\HasMany;
use Core\Mod\Commerce\Contracts\Orderable;
use Spatie\Activitylog\LogOptions; use Spatie\Activitylog\LogOptions;
use Spatie\Activitylog\Traits\LogsActivity; use Spatie\Activitylog\Traits\LogsActivity;

View file

@ -2,6 +2,7 @@
namespace Core\Mod\Commerce\Models; namespace Core\Mod\Commerce\Models;
use Core\Mod\Commerce\Contracts\Orderable;
use Core\Tenant\Models\User; use Core\Tenant\Models\User;
use Core\Tenant\Models\Workspace; use Core\Tenant\Models\Workspace;
use Illuminate\Database\Eloquent\Factories\HasFactory; 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\HasMany;
use Illuminate\Database\Eloquent\Relations\HasOne; use Illuminate\Database\Eloquent\Relations\HasOne;
use Illuminate\Database\Eloquent\Relations\MorphTo; use Illuminate\Database\Eloquent\Relations\MorphTo;
use Core\Mod\Commerce\Contracts\Orderable;
use Spatie\Activitylog\LogOptions; use Spatie\Activitylog\LogOptions;
use Spatie\Activitylog\Traits\LogsActivity; use Spatie\Activitylog\Traits\LogsActivity;

View file

@ -4,13 +4,13 @@ declare(strict_types=1);
namespace Core\Mod\Commerce\Models; namespace Core\Mod\Commerce\Models;
use Core\Mod\Commerce\Concerns\HasContentOverrides;
use Illuminate\Database\Eloquent\Factories\HasFactory; use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\Relations\BelongsTo; use Illuminate\Database\Eloquent\Relations\BelongsTo;
use Illuminate\Database\Eloquent\Relations\HasMany; use Illuminate\Database\Eloquent\Relations\HasMany;
use Illuminate\Database\Eloquent\SoftDeletes; use Illuminate\Database\Eloquent\SoftDeletes;
use Illuminate\Support\Str; use Illuminate\Support\Str;
use Core\Mod\Commerce\Concerns\HasContentOverrides;
use Spatie\Activitylog\LogOptions; use Spatie\Activitylog\LogOptions;
use Spatie\Activitylog\Traits\LogsActivity; use Spatie\Activitylog\Traits\LogsActivity;

View file

@ -4,9 +4,9 @@ declare(strict_types=1);
namespace Core\Mod\Commerce\Models; namespace Core\Mod\Commerce\Models;
use Core\Mod\Commerce\Concerns\HasContentOverrides;
use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\Relations\BelongsTo; use Illuminate\Database\Eloquent\Relations\BelongsTo;
use Core\Mod\Commerce\Concerns\HasContentOverrides;
/** /**
* Product Assignment - Links products to M2/M3 entities. * Product Assignment - Links products to M2/M3 entities.

View file

@ -2,14 +2,14 @@
namespace Core\Mod\Commerce\Models; 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\Workspace;
use Core\Tenant\Models\WorkspacePackage; use Core\Tenant\Models\WorkspacePackage;
use Illuminate\Database\Eloquent\Factories\HasFactory; use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\Relations\BelongsTo; use Illuminate\Database\Eloquent\Relations\BelongsTo;
use Illuminate\Database\Eloquent\Relations\HasMany; 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\LogOptions;
use Spatie\Activitylog\Traits\LogsActivity; use Spatie\Activitylog\Traits\LogsActivity;

View file

@ -2,11 +2,11 @@
namespace Core\Mod\Commerce\Notifications; namespace Core\Mod\Commerce\Notifications;
use Core\Mod\Commerce\Models\Subscription;
use Illuminate\Bus\Queueable; use Illuminate\Bus\Queueable;
use Illuminate\Contracts\Queue\ShouldQueue; use Illuminate\Contracts\Queue\ShouldQueue;
use Illuminate\Notifications\Messages\MailMessage; use Illuminate\Notifications\Messages\MailMessage;
use Illuminate\Notifications\Notification; use Illuminate\Notifications\Notification;
use Core\Mod\Commerce\Models\Subscription;
class SubscriptionPaused extends Notification implements ShouldQueue class SubscriptionPaused extends Notification implements ShouldQueue
{ {

View file

@ -184,11 +184,10 @@ class CommerceService
* also applies rate limiting. * also applies rate limiting.
* *
* @param Request|null $request The HTTP request for rate limiting (auto-resolved if null) * @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 CheckoutRateLimitException When rate limit is exceeded
* @throws FraudBlockedException When order is blocked due to high fraud risk * @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( public function createCheckout(
Order $order, Order $order,

View file

@ -4,10 +4,10 @@ declare(strict_types=1);
namespace Core\Mod\Commerce\Services; 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\ContentOverride;
use Core\Mod\Commerce\Models\Entity; 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. * Content Override Service - Sparse override resolution for white-label commerce.

View file

@ -2,14 +2,14 @@
namespace Core\Mod\Commerce\Services; 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\User;
use Core\Tenant\Models\Workspace; use Core\Tenant\Models\Workspace;
use Illuminate\Database\Eloquent\Collection; use Illuminate\Database\Eloquent\Collection;
use Illuminate\Support\Facades\DB; use Illuminate\Support\Facades\DB;
use Illuminate\Support\Facades\Log; 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 class CreditNoteService
{ {

View file

@ -4,11 +4,11 @@ declare(strict_types=1);
namespace Core\Mod\Commerce\Services; namespace Core\Mod\Commerce\Services;
use Core\Mod\Commerce\Models\ExchangeRate;
use Illuminate\Http\Request; use Illuminate\Http\Request;
use Illuminate\Support\Facades\Http; use Illuminate\Support\Facades\Http;
use Illuminate\Support\Facades\Log; use Illuminate\Support\Facades\Log;
use Illuminate\Support\Facades\Session; use Illuminate\Support\Facades\Session;
use Core\Mod\Commerce\Models\ExchangeRate;
/** /**
* Currency service for multi-currency support. * Currency service for multi-currency support.

View file

@ -3,8 +3,6 @@
namespace Core\Mod\Commerce\Services; namespace Core\Mod\Commerce\Services;
use Carbon\Carbon; use Carbon\Carbon;
use Illuminate\Support\Collection;
use Illuminate\Support\Facades\Log;
use Core\Mod\Commerce\Models\Invoice; use Core\Mod\Commerce\Models\Invoice;
use Core\Mod\Commerce\Models\Subscription; use Core\Mod\Commerce\Models\Subscription;
use Core\Mod\Commerce\Notifications\AccountSuspended; 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\SubscriptionCancelled;
use Core\Mod\Commerce\Notifications\SubscriptionPaused; use Core\Mod\Commerce\Notifications\SubscriptionPaused;
use Core\Tenant\Services\EntitlementService; use Core\Tenant\Services\EntitlementService;
use Illuminate\Support\Collection;
use Illuminate\Support\Facades\Log;
/** /**
* Dunning service for failed payment recovery. * Dunning service for failed payment recovery.

View file

@ -3,14 +3,14 @@
namespace Core\Mod\Commerce\Services; namespace Core\Mod\Commerce\Services;
use Barryvdh\DomPDF\Facade\Pdf; 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\Mail\InvoiceGenerated;
use Core\Mod\Commerce\Models\Invoice; use Core\Mod\Commerce\Models\Invoice;
use Core\Mod\Commerce\Models\InvoiceItem; use Core\Mod\Commerce\Models\InvoiceItem;
use Core\Mod\Commerce\Models\Order; use Core\Mod\Commerce\Models\Order;
use Core\Mod\Commerce\Models\Payment; use Core\Mod\Commerce\Models\Payment;
use Core\Tenant\Models\Workspace; use Core\Tenant\Models\Workspace;
use Illuminate\Support\Facades\Mail;
use Illuminate\Support\Facades\Storage;
/** /**
* Invoice generation and management service. * Invoice generation and management service.

View file

@ -2,13 +2,13 @@
namespace Core\Mod\Commerce\Services\PaymentGateway; 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\Order;
use Core\Mod\Commerce\Models\Payment; use Core\Mod\Commerce\Models\Payment;
use Core\Mod\Commerce\Models\PaymentMethod; use Core\Mod\Commerce\Models\PaymentMethod;
use Core\Mod\Commerce\Models\Refund; use Core\Mod\Commerce\Models\Refund;
use Core\Mod\Commerce\Models\Subscription; use Core\Mod\Commerce\Models\Subscription;
use Core\Tenant\Models\Workspace;
use Illuminate\Support\Facades\Log;
use Stripe\StripeClient; use Stripe\StripeClient;
/** /**

View file

@ -2,13 +2,13 @@
namespace Core\Mod\Commerce\Services; 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\User;
use Core\Tenant\Models\Workspace; use Core\Tenant\Models\Workspace;
use Illuminate\Support\Collection; use Illuminate\Support\Collection;
use Illuminate\Support\Facades\DB; use Illuminate\Support\Facades\DB;
use Illuminate\Support\Facades\Log; use Illuminate\Support\Facades\Log;
use Core\Mod\Commerce\Models\PaymentMethod;
use Core\Mod\Commerce\Services\PaymentGateway\StripeGateway;
/** /**
* Service for managing payment methods. * Service for managing payment methods.

View file

@ -4,16 +4,16 @@ declare(strict_types=1);
namespace Core\Mod\Commerce\Services; 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\Order;
use Core\Mod\Commerce\Models\Referral; use Core\Mod\Commerce\Models\Referral;
use Core\Mod\Commerce\Models\ReferralCode; use Core\Mod\Commerce\Models\ReferralCode;
use Core\Mod\Commerce\Models\ReferralCommission; use Core\Mod\Commerce\Models\ReferralCommission;
use Core\Mod\Commerce\Models\ReferralPayout; 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. * Service for managing referrals and affiliate commissions.

View file

@ -3,14 +3,14 @@
namespace Core\Mod\Commerce\Services; namespace Core\Mod\Commerce\Services;
use Carbon\Carbon; use Carbon\Carbon;
use Illuminate\Support\Facades\DB;
use Illuminate\Support\Facades\Log;
use Core\Mod\Commerce\Exceptions\PauseLimitExceededException; use Core\Mod\Commerce\Exceptions\PauseLimitExceededException;
use Core\Mod\Commerce\Models\Subscription; use Core\Mod\Commerce\Models\Subscription;
use Core\Tenant\Models\Package; use Core\Tenant\Models\Package;
use Core\Tenant\Models\Workspace; use Core\Tenant\Models\Workspace;
use Core\Tenant\Models\WorkspacePackage; use Core\Tenant\Models\WorkspacePackage;
use Core\Tenant\Services\EntitlementService; use Core\Tenant\Services\EntitlementService;
use Illuminate\Support\Facades\DB;
use Illuminate\Support\Facades\Log;
class SubscriptionService class SubscriptionService
{ {

View file

@ -2,12 +2,12 @@
namespace Core\Mod\Commerce\Services; 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\Contracts\Orderable;
use Core\Mod\Commerce\Models\TaxRate; use Core\Mod\Commerce\Models\TaxRate;
use Core\Tenant\Models\Workspace; use Core\Tenant\Models\Workspace;
use Illuminate\Support\Facades\Cache;
use Illuminate\Support\Facades\Http;
use Illuminate\Support\Facades\Log;
/** /**
* Tax calculation service. * Tax calculation service.

View file

@ -3,11 +3,6 @@
namespace Core\Mod\Commerce\Services; namespace Core\Mod\Commerce\Services;
use Carbon\Carbon; 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\Invoice;
use Core\Mod\Commerce\Models\InvoiceItem; use Core\Mod\Commerce\Models\InvoiceItem;
use Core\Mod\Commerce\Models\Subscription; 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\UsageEvent;
use Core\Mod\Commerce\Models\UsageMeter; use Core\Mod\Commerce\Models\UsageMeter;
use Core\Mod\Commerce\Services\PaymentGateway\StripeGateway; 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. * Usage-based billing service.

View file

@ -4,13 +4,13 @@ declare(strict_types=1);
namespace Core\Mod\Commerce\Services; 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\Database\QueryException;
use Illuminate\Http\Request; use Illuminate\Http\Request;
use Illuminate\Http\Response; use Illuminate\Http\Response;
use Illuminate\Support\Facades\Log; 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. * Service for logging webhook events from payment gateways.

View file

@ -206,7 +206,7 @@ class WebhookRateLimiter
// Build a bitmask from the prefix length // Build a bitmask from the prefix length
$maskBinary = str_repeat("\xff", (int) ($mask / 8)); $maskBinary = str_repeat("\xff", (int) ($mask / 8));
if ($mask % 8) { if ($mask % 8) {
$maskBinary .= chr(0xff << (8 - ($mask % 8))); $maskBinary .= chr(0xFF << (8 - ($mask % 8)));
} }
$maskBinary = str_pad($maskBinary, 16, "\x00"); $maskBinary = str_pad($maskBinary, 16, "\x00");

View file

@ -4,14 +4,14 @@ declare(strict_types=1);
namespace Core\Mod\Commerce\View\Modal\Admin; 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 Core\Tenant\Models\Package;
use Livewire\Attributes\Computed; use Livewire\Attributes\Computed;
use Livewire\Attributes\Layout; use Livewire\Attributes\Layout;
use Livewire\Attributes\Title; use Livewire\Attributes\Title;
use Livewire\Component; use Livewire\Component;
use Livewire\WithPagination; use Livewire\WithPagination;
use Core\Mod\Commerce\Models\Coupon;
use Core\Mod\Commerce\Services\CouponService;
#[Layout('hub::admin.layouts.app')] #[Layout('hub::admin.layouts.app')]
#[Title('Coupons')] #[Title('Coupons')]

View file

@ -4,14 +4,14 @@ declare(strict_types=1);
namespace Core\Mod\Commerce\View\Modal\Admin; 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\User;
use Core\Tenant\Models\Workspace; use Core\Tenant\Models\Workspace;
use Livewire\Attributes\Computed; use Livewire\Attributes\Computed;
use Livewire\Attributes\Title; use Livewire\Attributes\Title;
use Livewire\Component; use Livewire\Component;
use Livewire\WithPagination; use Livewire\WithPagination;
use Core\Mod\Commerce\Models\CreditNote;
use Core\Mod\Commerce\Services\CreditNoteService;
#[Title('Credit Notes')] #[Title('Credit Notes')]
class CreditNoteManager extends Component class CreditNoteManager extends Component

View file

@ -10,8 +10,8 @@ use Core\Mod\Commerce\Models\ProductAssignment;
use Core\Mod\Commerce\Services\ProductCatalogService; use Core\Mod\Commerce\Services\ProductCatalogService;
use Illuminate\Contracts\View\View; use Illuminate\Contracts\View\View;
use Livewire\Attributes\Computed; use Livewire\Attributes\Computed;
use Livewire\Attributes\Url;
use Livewire\Attributes\Layout; use Livewire\Attributes\Layout;
use Livewire\Attributes\Url;
use Livewire\Component; use Livewire\Component;
use Livewire\WithPagination; use Livewire\WithPagination;

View file

@ -4,16 +4,16 @@ declare(strict_types=1);
namespace Core\Mod\Commerce\View\Modal\Admin; 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\Referral;
use Core\Mod\Commerce\Models\ReferralCode; use Core\Mod\Commerce\Models\ReferralCode;
use Core\Mod\Commerce\Models\ReferralCommission; use Core\Mod\Commerce\Models\ReferralCommission;
use Core\Mod\Commerce\Models\ReferralPayout; use Core\Mod\Commerce\Models\ReferralPayout;
use Core\Mod\Commerce\Services\ReferralService; 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. * Admin dashboard for managing referrals, commissions, and payouts.

View file

@ -2,15 +2,15 @@
namespace Core\Mod\Commerce\View\Modal\Web; 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\Package;
use Core\Tenant\Models\Workspace; use Core\Tenant\Models\Workspace;
use Illuminate\Support\Collection; use Illuminate\Support\Collection;
use Illuminate\Support\Facades\Auth; use Illuminate\Support\Facades\Auth;
use Livewire\Attributes\Layout; use Livewire\Attributes\Layout;
use Livewire\Component; 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. * Plan change UI for upgrading or downgrading subscriptions.

View file

@ -2,11 +2,11 @@
namespace Core\Mod\Commerce\View\Modal\Web; namespace Core\Mod\Commerce\View\Modal\Web;
use Core\Mod\Commerce\Models\Order;
use Core\Tenant\Models\User;
use Illuminate\Support\Facades\Auth; use Illuminate\Support\Facades\Auth;
use Livewire\Attributes\Layout; use Livewire\Attributes\Layout;
use Livewire\Component; use Livewire\Component;
use Core\Mod\Commerce\Models\Order;
use Core\Tenant\Models\User;
#[Layout('shared::layouts.checkout')] #[Layout('shared::layouts.checkout')]
class CheckoutCancel extends Component class CheckoutCancel extends Component

View file

@ -2,13 +2,6 @@
namespace Core\Mod\Commerce\View\Modal\Web; 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\Coupon;
use Core\Mod\Commerce\Models\ExchangeRate; use Core\Mod\Commerce\Models\ExchangeRate;
use Core\Mod\Commerce\Models\Order; 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\CouponService;
use Core\Mod\Commerce\Services\CurrencyService; use Core\Mod\Commerce\Services\CurrencyService;
use Core\Mod\Commerce\Services\TaxService; 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')] #[Layout('shared::layouts.checkout')]
class CheckoutPage extends Component class CheckoutPage extends Component

View file

@ -2,6 +2,9 @@
namespace Core\Mod\Commerce\View\Modal\Web; 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\Auth\Events\Registered;
use Illuminate\Support\Facades\Auth; use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Facades\DB; use Illuminate\Support\Facades\DB;
@ -9,9 +12,6 @@ use Illuminate\Support\Facades\Hash;
use Livewire\Attributes\Layout; use Livewire\Attributes\Layout;
use Livewire\Attributes\Validate; use Livewire\Attributes\Validate;
use Livewire\Component; use Livewire\Component;
use Core\Mod\Commerce\Models\Order;
use Core\Tenant\Models\User;
use Core\Tenant\Models\Workspace;
#[Layout('shared::layouts.checkout')] #[Layout('shared::layouts.checkout')]
class CheckoutSuccess extends Component class CheckoutSuccess extends Component

View file

@ -4,9 +4,9 @@ declare(strict_types=1);
namespace Core\Mod\Commerce\View\Modal\Web; namespace Core\Mod\Commerce\View\Modal\Web;
use Core\Mod\Commerce\Services\CurrencyService;
use Livewire\Attributes\Computed; use Livewire\Attributes\Computed;
use Livewire\Component; use Livewire\Component;
use Core\Mod\Commerce\Services\CurrencyService;
/** /**
* Currency selector component. * Currency selector component.

View file

@ -2,14 +2,14 @@
namespace Core\Mod\Commerce\View\Modal\Web; 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 Core\Tenant\Models\Workspace;
use Illuminate\Support\Collection; use Illuminate\Support\Collection;
use Illuminate\Support\Facades\Auth; use Illuminate\Support\Facades\Auth;
use Livewire\Attributes\Layout; use Livewire\Attributes\Layout;
use Livewire\Component; 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')] #[Layout('hub::admin.layouts.app')]
class PaymentMethods extends Component class PaymentMethods extends Component

View file

@ -4,15 +4,15 @@ declare(strict_types=1);
namespace Core\Mod\Commerce\View\Modal\Web; 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\Computed;
use Livewire\Attributes\Layout; use Livewire\Attributes\Layout;
use Livewire\Attributes\Title; use Livewire\Attributes\Title;
use Livewire\Component; use Livewire\Component;
use Livewire\WithPagination; 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. * User-facing referral dashboard showing earnings and referrals.

View file

@ -2,13 +2,13 @@
namespace Core\Mod\Commerce\View\Modal\Web; 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 Core\Tenant\Models\Workspace;
use Illuminate\Support\Collection; use Illuminate\Support\Collection;
use Illuminate\Support\Facades\Auth; use Illuminate\Support\Facades\Auth;
use Livewire\Component; use Livewire\Component;
use Core\Mod\Commerce\Models\Subscription;
use Core\Mod\Commerce\Services\CommerceService;
use Core\Mod\Commerce\Services\UsageBillingService;
/** /**
* Usage Dashboard component. * Usage Dashboard component.

39
phpunit.xml Normal file
View file

@ -0,0 +1,39 @@
<?xml version="1.0" encoding="UTF-8"?>
<phpunit xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="vendor/phpunit/phpunit/phpunit.xsd"
bootstrap="vendor/autoload.php"
colors="true"
cacheDirectory=".phpunit.cache"
executionOrder="random"
requireCoverageMetadata="false"
beStrictAboutCoverageMetadata="false"
beStrictAboutOutputDuringTests="true"
failOnRisky="true"
failOnWarning="true">
<testsuites>
<testsuite name="Feature">
<directory>tests/Feature</directory>
</testsuite>
<testsuite name="Unit">
<directory>tests/Unit</directory>
</testsuite>
</testsuites>
<source>
<include>
<directory>src</directory>
</include>
</source>
<php>
<env name="APP_ENV" value="testing"/>
<env name="APP_DEBUG" value="true"/>
<env name="APP_KEY" value="base64:Kx0qLJZJAQcDSFE2gMpuOlwrJcC6kXHM0j0KJdMGqzQ="/>
<env name="BCRYPT_ROUNDS" value="4"/>
<env name="CACHE_STORE" value="array"/>
<env name="DB_CONNECTION" value="sqlite"/>
<env name="DB_DATABASE" value=":memory:"/>
<env name="MAIL_MAILER" value="array"/>
<env name="QUEUE_CONNECTION" value="sync"/>
<env name="SESSION_DRIVER" value="array"/>
<env name="TELESCOPE_ENABLED" value="false"/>
</php>
</phpunit>

View file

@ -2,10 +2,10 @@
declare(strict_types=1); declare(strict_types=1);
use Illuminate\Support\Facades\Route;
use Core\Mod\Commerce\Controllers\Api\CommerceController; use Core\Mod\Commerce\Controllers\Api\CommerceController;
use Core\Mod\Commerce\Controllers\Webhooks\BTCPayWebhookController; use Core\Mod\Commerce\Controllers\Webhooks\BTCPayWebhookController;
use Core\Mod\Commerce\Controllers\Webhooks\StripeWebhookController; use Core\Mod\Commerce\Controllers\Webhooks\StripeWebhookController;
use Illuminate\Support\Facades\Route;
/* /*
|-------------------------------------------------------------------------- |--------------------------------------------------------------------------

View file

@ -1,6 +1,5 @@
<?php <?php
use Illuminate\Support\Facades\Cache;
use Core\Mod\Commerce\Models\Invoice; use Core\Mod\Commerce\Models\Invoice;
use Core\Mod\Commerce\Models\Order; use Core\Mod\Commerce\Models\Order;
use Core\Mod\Commerce\Models\Payment; use Core\Mod\Commerce\Models\Payment;
@ -10,6 +9,7 @@ use Core\Tenant\Models\Package;
use Core\Tenant\Models\User; use Core\Tenant\Models\User;
use Core\Tenant\Models\Workspace; use Core\Tenant\Models\Workspace;
use Core\Tenant\Models\WorkspacePackage; use Core\Tenant\Models\WorkspacePackage;
use Illuminate\Support\Facades\Cache;
uses(\Illuminate\Foundation\Testing\RefreshDatabase::class); uses(\Illuminate\Foundation\Testing\RefreshDatabase::class);

View file

@ -4,11 +4,11 @@ declare(strict_types=1);
namespace Core\Mod\Commerce\Tests\Feature; namespace Core\Mod\Commerce\Tests\Feature;
use Illuminate\Foundation\Testing\RefreshDatabase;
use Core\Mod\Commerce\Models\ContentOverride; use Core\Mod\Commerce\Models\ContentOverride;
use Core\Mod\Commerce\Models\Entity; use Core\Mod\Commerce\Models\Entity;
use Core\Mod\Commerce\Models\Product; use Core\Mod\Commerce\Models\Product;
use Core\Mod\Commerce\Services\ContentOverrideService; use Core\Mod\Commerce\Services\ContentOverrideService;
use Illuminate\Foundation\Testing\RefreshDatabase;
use Tests\TestCase; use Tests\TestCase;
class ContentOverrideServiceTest extends TestCase class ContentOverrideServiceTest extends TestCase

View file

@ -4,9 +4,9 @@ declare(strict_types=1);
namespace Core\Mod\Commerce\Tests\Feature; namespace Core\Mod\Commerce\Tests\Feature;
use Illuminate\Foundation\Testing\RefreshDatabase;
use Core\Mod\Commerce\Models\ExchangeRate; use Core\Mod\Commerce\Models\ExchangeRate;
use Core\Mod\Commerce\Services\CurrencyService; use Core\Mod\Commerce\Services\CurrencyService;
use Illuminate\Foundation\Testing\RefreshDatabase;
use Tests\TestCase; use Tests\TestCase;
class CurrencyServiceTest extends TestCase class CurrencyServiceTest extends TestCase

View file

@ -1,8 +1,6 @@
<?php <?php
use Carbon\Carbon; use Carbon\Carbon;
use Illuminate\Support\Facades\Cache;
use Illuminate\Support\Facades\Notification;
use Core\Mod\Commerce\Models\Invoice; use Core\Mod\Commerce\Models\Invoice;
use Core\Mod\Commerce\Models\Subscription; use Core\Mod\Commerce\Models\Subscription;
use Core\Mod\Commerce\Notifications\AccountSuspended; use Core\Mod\Commerce\Notifications\AccountSuspended;
@ -14,6 +12,8 @@ use Core\Tenant\Models\Package;
use Core\Tenant\Models\User; use Core\Tenant\Models\User;
use Core\Tenant\Models\Workspace; use Core\Tenant\Models\Workspace;
use Core\Tenant\Models\WorkspacePackage; use Core\Tenant\Models\WorkspacePackage;
use Illuminate\Support\Facades\Cache;
use Illuminate\Support\Facades\Notification;
uses(\Illuminate\Foundation\Testing\RefreshDatabase::class); uses(\Illuminate\Foundation\Testing\RefreshDatabase::class);

View file

@ -1,7 +1,5 @@
<?php <?php
use Illuminate\Support\Facades\Cache;
use Illuminate\Support\Facades\Event;
use Core\Mod\Commerce\Events\SubscriptionRenewed; use Core\Mod\Commerce\Events\SubscriptionRenewed;
use Core\Mod\Commerce\Jobs\ProcessSubscriptionRenewal; use Core\Mod\Commerce\Jobs\ProcessSubscriptionRenewal;
use Core\Mod\Commerce\Models\Subscription; use Core\Mod\Commerce\Models\Subscription;
@ -13,6 +11,8 @@ use Core\Tenant\Models\User;
use Core\Tenant\Models\Workspace; use Core\Tenant\Models\Workspace;
use Core\Tenant\Models\WorkspacePackage; use Core\Tenant\Models\WorkspacePackage;
use Core\Tenant\Services\EntitlementService; use Core\Tenant\Services\EntitlementService;
use Illuminate\Support\Facades\Cache;
use Illuminate\Support\Facades\Event;
uses(\Illuminate\Foundation\Testing\RefreshDatabase::class); uses(\Illuminate\Foundation\Testing\RefreshDatabase::class);

View file

@ -1,7 +1,6 @@
<?php <?php
use Carbon\Carbon; use Carbon\Carbon;
use Illuminate\Support\Facades\Cache;
use Core\Mod\Commerce\Exceptions\PauseLimitExceededException; use Core\Mod\Commerce\Exceptions\PauseLimitExceededException;
use Core\Mod\Commerce\Models\Subscription; use Core\Mod\Commerce\Models\Subscription;
use Core\Mod\Commerce\Services\ProrationResult; use Core\Mod\Commerce\Services\ProrationResult;
@ -11,6 +10,7 @@ use Core\Tenant\Models\Package;
use Core\Tenant\Models\User; use Core\Tenant\Models\User;
use Core\Tenant\Models\Workspace; use Core\Tenant\Models\Workspace;
use Core\Tenant\Models\WorkspacePackage; use Core\Tenant\Models\WorkspacePackage;
use Illuminate\Support\Facades\Cache;
uses(\Illuminate\Foundation\Testing\RefreshDatabase::class); uses(\Illuminate\Foundation\Testing\RefreshDatabase::class);

View file

@ -2,9 +2,9 @@
declare(strict_types=1); declare(strict_types=1);
use Core\Mod\Commerce\Services\WebhookRateLimiter;
use Illuminate\Cache\RateLimiter; use Illuminate\Cache\RateLimiter;
use Illuminate\Http\Request; use Illuminate\Http\Request;
use Core\Mod\Commerce\Services\WebhookRateLimiter;
uses(\Illuminate\Foundation\Testing\RefreshDatabase::class); uses(\Illuminate\Foundation\Testing\RefreshDatabase::class);

View file

@ -2,7 +2,6 @@
use Core\Mod\Commerce\Controllers\Webhooks\BTCPayWebhookController; use Core\Mod\Commerce\Controllers\Webhooks\BTCPayWebhookController;
use Core\Mod\Commerce\Controllers\Webhooks\StripeWebhookController; use Core\Mod\Commerce\Controllers\Webhooks\StripeWebhookController;
use WebhookPayloadValidationException;
use Core\Mod\Commerce\Models\Order; use Core\Mod\Commerce\Models\Order;
use Core\Mod\Commerce\Models\OrderItem; use Core\Mod\Commerce\Models\OrderItem;
use Core\Mod\Commerce\Models\Payment; use Core\Mod\Commerce\Models\Payment;
@ -21,6 +20,7 @@ use Core\Tenant\Models\Workspace;
use Core\Tenant\Models\WorkspacePackage; use Core\Tenant\Models\WorkspacePackage;
use Core\Tenant\Services\EntitlementService; use Core\Tenant\Services\EntitlementService;
use Illuminate\Support\Facades\Notification; use Illuminate\Support\Facades\Notification;
use WebhookPayloadValidationException;
uses(\Illuminate\Foundation\Testing\RefreshDatabase::class); uses(\Illuminate\Foundation\Testing\RefreshDatabase::class);
@ -1396,7 +1396,7 @@ describe('Webhook Idempotency (Replay Attack Protection)', function () {
}); });
it('processes first webhook and rejects subsequent duplicates', function () { it('processes first webhook and rejects subsequent duplicates', function () {
$eventId = 'btc_event_first_' . uniqid(); $eventId = 'btc_event_first_'.uniqid();
$mockGateway = Mockery::mock(BTCPayGateway::class); $mockGateway = Mockery::mock(BTCPayGateway::class);
$mockGateway->shouldReceive('verifyWebhookSignature')->andReturn(true); $mockGateway->shouldReceive('verifyWebhookSignature')->andReturn(true);

7
tests/Pest.php Normal file
View file

@ -0,0 +1,7 @@
<?php
declare(strict_types=1);
use Orchestra\Testbench\TestCase;
uses(TestCase::class)->in('Feature', 'Unit');

View file

@ -7,9 +7,6 @@
* Tests the happy path user journey for products, orders, and subscriptions. * 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\User;
use Core\Tenant\Models\Workspace; use Core\Tenant\Models\Workspace;