Link tenant packages to events and show usage in billing
Some checks failed
linter / quality (push) Has been cancelled
tests / ci (push) Has been cancelled
tests / ui (push) Has been cancelled

This commit is contained in:
Codex Agent
2026-02-06 12:54:33 +01:00
parent fa114ac0dc
commit 0291d537fb
11 changed files with 572 additions and 51 deletions

View File

@@ -95,4 +95,64 @@ class TenantPackageOverviewTest extends TenantTestCase
$this->assertSame(['custom_branding'], $payload['active_package']['package_limits']['features']);
$this->assertSame(1, $payload['active_package']['remaining_events']);
}
public function test_package_overview_includes_current_and_last_linked_event(): void
{
Carbon::setTestNow(Carbon::parse('2024-01-10 10:00:00'));
$resellerPackage = Package::factory()->reseller()->create([
'max_events_per_year' => 10,
]);
$servicePackage = Package::factory()->endcustomer()->create([
'slug' => 'standard',
'gallery_days' => 30,
]);
$tenantPackage = TenantPackage::factory()->create([
'tenant_id' => $this->tenant->id,
'package_id' => $resellerPackage->id,
'active' => true,
'used_events' => 2,
]);
$olderEvent = Event::factory()->create([
'tenant_id' => $this->tenant->id,
'name' => ['de' => 'Altes Event'],
'slug' => 'altes-event',
]);
$currentEvent = Event::factory()->create([
'tenant_id' => $this->tenant->id,
'name' => ['de' => 'Aktuelles Event'],
'slug' => 'aktuelles-event',
]);
EventPackage::create([
'event_id' => $olderEvent->id,
'package_id' => $servicePackage->id,
'tenant_package_id' => $tenantPackage->id,
'purchased_price' => 0,
'purchased_at' => now()->subDays(2),
'gallery_expires_at' => now()->subDay(),
]);
EventPackage::create([
'event_id' => $currentEvent->id,
'package_id' => $servicePackage->id,
'tenant_package_id' => $tenantPackage->id,
'purchased_price' => 0,
'purchased_at' => now()->subDay(),
'gallery_expires_at' => now()->addDays(20),
]);
$request = Request::create('/api/v1/tenant/packages', 'GET');
$request->attributes->set('tenant', $this->tenant);
$response = app(TenantPackageController::class)->index($request);
$payload = $response->getData(true);
$this->assertSame(2, $payload['active_package']['linked_events_count']);
$this->assertSame($currentEvent->id, $payload['active_package']['current_event']['id']);
$this->assertSame('aktuelles-event', $payload['active_package']['current_event']['slug']);
$this->assertSame($currentEvent->name, $payload['active_package']['current_event']['name']);
$this->assertSame($currentEvent->id, $payload['active_package']['last_event']['id']);
}
}