implemented event package addons with filament resource, event-admin purchase path and notifications, showing up in purchase history

This commit is contained in:
Codex Agent
2025-11-21 11:25:45 +01:00
parent 07fe049b8a
commit 7a8d22a238
58 changed files with 3339 additions and 60 deletions

View File

@@ -145,4 +145,41 @@ class PackageUsageTrackerTest extends TestCase
EventFacade::assertDispatched(EventPackageGuestLimitReached::class);
}
public function test_effective_limits_include_extras(): void
{
EventFacade::fake([
EventPackagePhotoLimitReached::class,
]);
$tenant = Tenant::factory()->create();
$package = Package::factory()->endcustomer()->create([
'max_photos' => 2,
]);
$event = Event::factory()->for($tenant)->create();
$eventPackage = EventPackage::create([
'event_id' => $event->id,
'package_id' => $package->id,
'purchased_price' => $package->price,
'purchased_at' => now(),
'used_photos' => 2,
'used_guests' => 0,
'gallery_expires_at' => now()->addDays(7),
'extra_photos' => 2,
])->fresh(['package']);
/** @var PackageUsageTracker $tracker */
$tracker = app(PackageUsageTracker::class);
// Base limit reached but extras still available; no limit event expected yet.
$tracker->recordPhotoUsage($eventPackage, 1, 1);
EventFacade::assertNotDispatched(EventPackagePhotoLimitReached::class);
// Now consume extras and hit the effective limit.
$eventPackage->used_photos = 4;
$tracker->recordPhotoUsage($eventPackage, 3, 1);
EventFacade::assertDispatched(EventPackagePhotoLimitReached::class);
}
}