- Event-Medien tragen Typ (image/video/audio), Dauer und Notiz; Videos bekommen ein Poster, Audio wird per ffmpeg nach AAC (audio/mp4) gewandelt, Originale werden mit Range-Unterstützung gestreamt. - Upload nimmt eine Notiz (caption) direkt mit, PATCH ändert sie später. - Neue Event-Felder: Zeitraum (end_date), Kategorie, Personen, Meilenstein. Regeln zentral in EventFields, damit CRUD und Sync gleich prüfen. - Titel darf leer sein: ein Event entsteht mit dem ersten Eintrag. - Artisan-Befehl media:transcode-voice-notes wandelt alte WebM/Ogg-Notizen, die Safari nicht abspielen kann. - Login-Throttling, Settings-Validierung, Sync-Fehlercodes ohne Rohtext. Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
42 lines
1.4 KiB
PHP
42 lines
1.4 KiB
PHP
<?php
|
|
|
|
use App\Models\Event;
|
|
use App\Models\EventMedia;
|
|
use App\Models\User;
|
|
use Illuminate\Support\Facades\Storage;
|
|
use Livewire\Volt\Volt;
|
|
|
|
test('deleting a user removes their media files and settings background', function () {
|
|
Storage::fake('local');
|
|
|
|
$user = User::factory()->create(['password' => 'password']);
|
|
$event = Event::factory()->create(['user_id' => $user->id]);
|
|
$media = EventMedia::factory()->create([
|
|
'user_id' => $user->id,
|
|
'event_id' => $event->id,
|
|
'path' => "event-media/{$user->id}/original.jpg",
|
|
'preview_path' => "event-media/{$user->id}/preview.jpg",
|
|
'thumbnail_path' => "event-media/{$user->id}/thumb.jpg",
|
|
]);
|
|
|
|
$background = "settings-media/{$user->id}/background.jpg";
|
|
|
|
Storage::disk('local')->put($media->path, 'original');
|
|
Storage::disk('local')->put($media->preview_path, 'preview');
|
|
Storage::disk('local')->put($media->thumbnail_path, 'thumb');
|
|
Storage::disk('local')->put($background, 'background');
|
|
|
|
$this->actingAs($user);
|
|
|
|
Volt::test('settings.delete-user-form')
|
|
->set('password', 'password')
|
|
->call('deleteUser')
|
|
->assertHasNoErrors();
|
|
|
|
Storage::disk('local')->assertMissing($media->path);
|
|
Storage::disk('local')->assertMissing($media->preview_path);
|
|
Storage::disk('local')->assertMissing($media->thumbnail_path);
|
|
Storage::disk('local')->assertMissing($background);
|
|
|
|
expect($user->fresh())->toBeNull();
|
|
});
|