Extend demo join token expiry in seeder
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-04 15:36:02 +01:00
parent eee58f2d0c
commit beaff1c4e9
2 changed files with 83 additions and 2 deletions

View File

@@ -43,6 +43,7 @@ class DemoEventSeeder extends Seeder
'package' => $standardPackage,
'token_label' => 'Demo QR',
'token_value' => 'W2E3sbt7yclzpkAwNSARHYTVN1sPLBad8hfUjLVHmjkUviPd',
'join_token_expires_at' => Carbon::now()->addYears(20),
'collection_slugs' => ['wedding-classics-2025'],
'task_slug_prefix' => 'wedding-',
'branding' => [
@@ -95,7 +96,12 @@ class DemoEventSeeder extends Seeder
]
);
$this->ensureJoinToken($event, $config['token_label'], $config['token_value'] ?? null);
$this->ensureJoinToken(
$event,
$config['token_label'],
$config['token_value'] ?? null,
$config['join_token_expires_at'] ?? null
);
$this->attachEventPackage(
event: $event,
@@ -110,7 +116,7 @@ class DemoEventSeeder extends Seeder
}
}
private function ensureJoinToken(Event $event, string $label, ?string $token = null): void
private function ensureJoinToken(Event $event, string $label, ?string $token = null, ?Carbon $expiresAt = null): void
{
if ($event->joinTokens()->exists()) {
$existingToken = $event->joinTokens()->latest('id')->first();
@@ -121,6 +127,12 @@ class DemoEventSeeder extends Seeder
$existingToken->metadata = $metadata;
$existingToken->save();
}
if ($expiresAt && (! $existingToken->expires_at || $existingToken->expires_at->lt($expiresAt))) {
$existingToken->forceFill([
'expires_at' => $expiresAt,
])->save();
}
}
return;
@@ -137,6 +149,10 @@ class DemoEventSeeder extends Seeder
'metadata' => $metadata,
];
if ($expiresAt) {
$attributes['expires_at'] = $expiresAt;
}
$tokenModel = app(EventJoinTokenService::class)->createToken($event, $attributes);
if ($token) {

View File

@@ -0,0 +1,65 @@
<?php
namespace Tests\Feature;
use App\Models\Event;
use App\Models\EventType;
use App\Models\Package;
use App\Models\Tenant;
use Database\Seeders\DemoEventSeeder;
use Illuminate\Foundation\Testing\RefreshDatabase;
use Illuminate\Support\Carbon;
use Tests\TestCase;
class DemoEventSeederTest extends TestCase
{
use RefreshDatabase;
public function test_demo_wedding_join_token_ttl_is_extended(): void
{
$now = Carbon::parse('2026-02-04 12:00:00');
Carbon::setTestNow($now);
$tenant = Tenant::factory()->create(['slug' => 'demo-tenant']);
EventType::factory()->create([
'slug' => 'wedding',
'name' => ['de' => 'Hochzeit', 'en' => 'Wedding'],
]);
EventType::factory()->create([
'slug' => 'corporate',
'name' => ['de' => 'Business', 'en' => 'Corporate'],
]);
Package::factory()->endcustomer()->create([
'slug' => 'standard',
'name' => 'Standard',
]);
Package::factory()->endcustomer()->create([
'slug' => 'premium',
'name' => 'Premium',
]);
$event = Event::factory()->create([
'tenant_id' => $tenant->id,
'event_type_id' => EventType::where('slug', 'wedding')->value('id'),
'slug' => 'demo-wedding-2025',
'name' => ['de' => 'Demo', 'en' => 'Demo'],
'date' => $now->copy()->addMonth(),
]);
$token = $event->joinTokens()->latest('id')->first();
$token->forceFill(['expires_at' => $now->copy()->subDay()])->save();
$this->seed(DemoEventSeeder::class);
$event->refresh();
$token = $event->joinTokens()->latest('id')->first();
$expectedExpiry = $now->copy()->addYears(20);
$this->assertTrue($token->expires_at->equalTo($expectedExpiry));
Carbon::setTestNow();
}
}