Extend demo join token expiry in seeder
This commit is contained in:
@@ -43,6 +43,7 @@ class DemoEventSeeder extends Seeder
|
|||||||
'package' => $standardPackage,
|
'package' => $standardPackage,
|
||||||
'token_label' => 'Demo QR',
|
'token_label' => 'Demo QR',
|
||||||
'token_value' => 'W2E3sbt7yclzpkAwNSARHYTVN1sPLBad8hfUjLVHmjkUviPd',
|
'token_value' => 'W2E3sbt7yclzpkAwNSARHYTVN1sPLBad8hfUjLVHmjkUviPd',
|
||||||
|
'join_token_expires_at' => Carbon::now()->addYears(20),
|
||||||
'collection_slugs' => ['wedding-classics-2025'],
|
'collection_slugs' => ['wedding-classics-2025'],
|
||||||
'task_slug_prefix' => 'wedding-',
|
'task_slug_prefix' => 'wedding-',
|
||||||
'branding' => [
|
'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(
|
$this->attachEventPackage(
|
||||||
event: $event,
|
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()) {
|
if ($event->joinTokens()->exists()) {
|
||||||
$existingToken = $event->joinTokens()->latest('id')->first();
|
$existingToken = $event->joinTokens()->latest('id')->first();
|
||||||
@@ -121,6 +127,12 @@ class DemoEventSeeder extends Seeder
|
|||||||
$existingToken->metadata = $metadata;
|
$existingToken->metadata = $metadata;
|
||||||
$existingToken->save();
|
$existingToken->save();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if ($expiresAt && (! $existingToken->expires_at || $existingToken->expires_at->lt($expiresAt))) {
|
||||||
|
$existingToken->forceFill([
|
||||||
|
'expires_at' => $expiresAt,
|
||||||
|
])->save();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return;
|
return;
|
||||||
@@ -137,6 +149,10 @@ class DemoEventSeeder extends Seeder
|
|||||||
'metadata' => $metadata,
|
'metadata' => $metadata,
|
||||||
];
|
];
|
||||||
|
|
||||||
|
if ($expiresAt) {
|
||||||
|
$attributes['expires_at'] = $expiresAt;
|
||||||
|
}
|
||||||
|
|
||||||
$tokenModel = app(EventJoinTokenService::class)->createToken($event, $attributes);
|
$tokenModel = app(EventJoinTokenService::class)->createToken($event, $attributes);
|
||||||
|
|
||||||
if ($token) {
|
if ($token) {
|
||||||
|
|||||||
65
tests/Feature/DemoEventSeederTest.php
Normal file
65
tests/Feature/DemoEventSeederTest.php
Normal 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();
|
||||||
|
}
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user