Files

3.1 KiB

Test Report - T08: Bildretusche + Preisvergleich

Backend Tests

Command: cd backend && python -m pytest tests/test_retouch.py --cov=app.services.retouch_service --cov=app.routers.image_retouch --cov-report=term-missing -v

Result: 38 passed, 0 failed

Coverage

Module Stmts Miss Cover
app/routers/image_retouch.py 52 16 69%
app/services/retouch_service.py 132 5 96%
TOTAL 184 21 89%

Test Categories

TestRetouchService (20 tests)

  • validate_mime_type_valid/invalid
  • validate_file_size_valid/too_large
  • generate_retouch_prompt_default/with_vehicle_info
  • upload_retouch_file_success/invalid_mime/too_large
  • get_result_not_found
  • list_results_empty/with_data/filter_by_vehicle
  • process_retouch_success (mocked Flux.1-Pro)
  • process_retouch_failure (OpenRouter unavailable → status=failed)
  • process_retouch_not_found
  • _call_flux_pro_no_api_key
  • _call_flux_pro_success_data_uri (base64 response)
  • _call_flux_pro_success_list_content (list content parts)
  • _call_flux_pro_fallback_original_bytes (no image in response)

TestPriceCompareService (4 tests)

  • compare_prices_success (listings + average_price)
  • compare_prices_vehicle_not_found
  • compare_prices_listings_have_correct_make_model
  • compare_prices_average_calculation

TestRetouchRouter (14 tests)

  • POST /retouch/process → 202 + retouch_id (valid image)
  • POST /retouch/process → 422 (no file)
  • POST /retouch/process → 422 (invalid MIME)
  • POST /retouch/process → 202 (with vehicle_id)
  • GET /retouch/results/:id → 200 (completed)
  • GET /retouch/results/:id → 200 (processing)
  • GET /retouch/results/:id → 200 (failed + error_message)
  • GET /retouch/results/:id → 404 (not found)
  • POST /retouch/price-compare → 200 (success)
  • POST /retouch/price-compare → 422 (no vehicle_id)
  • POST /retouch/price-compare → 404 (vehicle not found)
  • POST /retouch/process → 401 (unauthorized)
  • GET /retouch/results/:id → 401 (unauthorized)
  • POST /retouch/price-compare → 401 (unauthorized)

Frontend Tests

Command: cd frontend && npx vitest run tests/retouch.test.tsx

Result: 13 passed, 0 failed

Test Categories

RetouchUpload (5 tests)

  • renders drag-and-drop zone
  • shows file input with image accept
  • shows error for non-image file
  • uploads image file successfully (mocked fetch)
  • shows error on upload failure

BeforeAfterSlider (3 tests)

  • renders both images (before + after)
  • renders labels (Original / Retuschiert)
  • renders slider handle

PriceComparison (5 tests)

  • renders vehicle ID input and compare button
  • shows error when comparing without vehicle ID
  • fetches and displays comparable listings (mocked apiFetch)
  • shows empty state when no listings found
  • shows error on fetch failure

Smoke Test

  • Backend: App imports successfully, router registered at /api/v1/retouch
  • Frontend: All 3 components render without errors in test environment
  • OpenRouter mocked in all backend tests (no real API calls)
  • Background task mocked in router integration tests (avoids event loop conflicts)