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

@@ -165,4 +165,40 @@ class PackageLimitEvaluatorTest extends TestCase
$this->assertTrue($summary['can_upload_photos']);
$this->assertTrue($summary['can_add_guests']);
}
public function test_assess_photo_upload_respects_extra_limits(): void
{
$package = Package::factory()->endcustomer()->create([
'max_photos' => 5,
]);
$tenant = Tenant::factory()->create();
$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' => 5,
'used_guests' => 0,
'gallery_expires_at' => now()->addDays(14),
'extra_photos' => 5,
])->fresh(['package']);
$violation = $this->evaluator->assessPhotoUpload($tenant->fresh(), $event->id);
$this->assertNull($violation, 'Upload should be allowed within extra photo allowance');
$eventPackage->update(['used_photos' => 10]);
$violation = $this->evaluator->assessPhotoUpload($tenant->fresh(), $event->id);
$this->assertNotNull($violation, 'Upload should be blocked after exceeding base + extras');
$this->assertSame('photo_limit_exceeded', $violation['code']);
$this->assertSame(0, $violation['meta']['remaining']);
}
}