feat(services): show CTS event ID tooltip on title hover
BIN
.sisyphus/evidence/final-qa/edge-mobile-api-log.png
Normal file
|
After Width: | Height: | Size: 38 KiB |
BIN
.sisyphus/evidence/final-qa/edge-mobile-services.png
Normal file
|
After Width: | Height: | Size: 32 KiB |
BIN
.sisyphus/evidence/final-qa/integration-sermon-slide-visible.png
Normal file
|
After Width: | Height: | Size: 144 KiB |
BIN
.sisyphus/evidence/final-qa/integration-sync-api-log.png
Normal file
|
After Width: | Height: | Size: 80 KiB |
BIN
.sisyphus/evidence/final-qa/integration-upload-sermon.png
Normal file
|
After Width: | Height: | Size: 57 KiB |
BIN
.sisyphus/evidence/final-qa/task-1-upload-invalid.png
Normal file
|
After Width: | Height: | Size: 70 KiB |
BIN
.sisyphus/evidence/final-qa/task-1-upload-valid.png
Normal file
|
After Width: | Height: | Size: 57 KiB |
BIN
.sisyphus/evidence/final-qa/task-2-sermon-block.png
Normal file
|
After Width: | Height: | Size: 149 KiB |
BIN
.sisyphus/evidence/final-qa/task-3-sync-error.png
Normal file
|
After Width: | Height: | Size: 95 KiB |
BIN
.sisyphus/evidence/final-qa/task-4-direct-vergangene.png
Normal file
|
After Width: | Height: | Size: 35 KiB |
BIN
.sisyphus/evidence/final-qa/task-4-toggle-kommende.png
Normal file
|
After Width: | Height: | Size: 95 KiB |
BIN
.sisyphus/evidence/final-qa/task-4-toggle-vergangene.png
Normal file
|
After Width: | Height: | Size: 37 KiB |
BIN
.sisyphus/evidence/final-qa/task-5-desktop-all-blocks.png
Normal file
|
After Width: | Height: | Size: 148 KiB |
BIN
.sisyphus/evidence/final-qa/task-5-mobile-stacked.png
Normal file
|
After Width: | Height: | Size: 119 KiB |
BIN
.sisyphus/evidence/final-qa/task-6-api-log-table.png
Normal file
|
After Width: | Height: | Size: 105 KiB |
BIN
.sisyphus/evidence/final-qa/task-6-error-filter.png
Normal file
|
After Width: | Height: | Size: 68 KiB |
BIN
.sisyphus/evidence/final-qa/task-6-search-filter.png
Normal file
|
After Width: | Height: | Size: 55 KiB |
20
.sisyphus/evidence/task-1-upload-invalid-error.txt
Normal file
|
|
@ -0,0 +1,20 @@
|
||||||
|
# Task 1: Upload Invalid File Type - Error Handling
|
||||||
|
|
||||||
|
## Test Scenario
|
||||||
|
- Attempted to upload test.txt file to Information block
|
||||||
|
- File type validation should reject .txt files
|
||||||
|
- Error message should display cleanly without JavaScript crash
|
||||||
|
|
||||||
|
## Results
|
||||||
|
✓ File type validation triggered correctly
|
||||||
|
✓ Error message displayed: "test.txt" — Dateityp nicht erlaubt. Nur PNG, JPG, PPT, PPTX und ZIP.
|
||||||
|
✓ No JavaScript TypeError (fix prevents file.name crash)
|
||||||
|
✓ Error dismissal button functional
|
||||||
|
✓ User-friendly German error message shown
|
||||||
|
|
||||||
|
## Evidence
|
||||||
|
- Page: http://cts-work.test/services/2/edit
|
||||||
|
- File: test.txt (20 bytes)
|
||||||
|
- Component: SlideUploader.vue
|
||||||
|
- Validation: Line 79-81 correctly accesses actualFile.name for extension check
|
||||||
|
- Error handling: Defensive guard on line 76 prevents wrapper access errors
|
||||||
18
.sisyphus/evidence/task-1-upload-jpg-happy.txt
Normal file
|
|
@ -0,0 +1,18 @@
|
||||||
|
# Task 1: Upload JPG File - Happy Path
|
||||||
|
|
||||||
|
## Test Scenario
|
||||||
|
- Uploaded test.jpg file to Information block
|
||||||
|
- File was processed without JavaScript errors
|
||||||
|
- Vue3Dropzone wrapper {file: File, id: number} was correctly unwrapped
|
||||||
|
|
||||||
|
## Results
|
||||||
|
✓ File upload initiated successfully
|
||||||
|
✓ No TypeError on file.name access (was the original bug)
|
||||||
|
✓ FormData correctly contains raw File object (not wrapper)
|
||||||
|
✓ Upload request sent to /slides endpoint
|
||||||
|
|
||||||
|
## Evidence
|
||||||
|
- Page: http://cts-work.test/services/2/edit
|
||||||
|
- File: test.jpg (16 bytes)
|
||||||
|
- Component: SlideUploader.vue
|
||||||
|
- Fix Applied: Lines 76, 79, 81, 87 now use actualFile instead of file wrapper
|
||||||
BIN
.sisyphus/evidence/task-2-refresh-page-works.png
Normal file
|
After Width: | Height: | Size: 145 KiB |
BIN
.sisyphus/evidence/task-2-sermon-block-rendered.png
Normal file
|
After Width: | Height: | Size: 133 KiB |
8
.sisyphus/evidence/task-3-sync-tests-pass.txt
Normal file
|
|
@ -0,0 +1,8 @@
|
||||||
|
|
||||||
|
PASS Tests\Feature\SyncControllerTest
|
||||||
|
✓ sync controller propagiert Fehlermeldung bei Sync-Fehler 0.17s
|
||||||
|
✓ sync controller zeigt Erfolgsmeldung bei erfolgreichem Sync 0.01s
|
||||||
|
|
||||||
|
Tests: 2 passed (4 assertions)
|
||||||
|
Duration: 0.28s
|
||||||
|
|
||||||
BIN
.sisyphus/evidence/task-4-archived-toggle.png
Normal file
|
After Width: | Height: | Size: 30 KiB |
BIN
.sisyphus/evidence/task-5-consistent-blocks.png
Normal file
|
After Width: | Height: | Size: 145 KiB |
BIN
.sisyphus/evidence/task-5-desktop-layout.png
Normal file
|
After Width: | Height: | Size: 144 KiB |
BIN
.sisyphus/evidence/task-5-mobile-layout.png
Normal file
|
After Width: | Height: | Size: 119 KiB |
1
ref/propresenter-file-api
Symbolic link
|
|
@ -0,0 +1 @@
|
||||||
|
../propresenter-work/
|
||||||
|
|
@ -133,6 +133,7 @@ public function test_services_index_zeigt_nur_heutige_und_kuenftige_services_mit
|
||||||
->component('Services/Index')
|
->component('Services/Index')
|
||||||
->has('services', 2)
|
->has('services', 2)
|
||||||
->where('services.0.id', $todayService->id)
|
->where('services.0.id', $todayService->id)
|
||||||
|
->where('services.0.cts_event_id', $todayService->cts_event_id)
|
||||||
->where('services.0.title', 'Gottesdienst Heute')
|
->where('services.0.title', 'Gottesdienst Heute')
|
||||||
->where('services.0.songs_total_count', 3)
|
->where('services.0.songs_total_count', 3)
|
||||||
->where('services.0.songs_mapped_count', 2)
|
->where('services.0.songs_mapped_count', 2)
|
||||||
|
|
|
||||||