Files
tilbudgivern/tests/TEST_SMART_PAKKE_OPGAVER.md
alexpolo1 653e364b1e chore: reorganize docs - move md files to correct locations
- Move root-level status/feature/summary MDs into docs/ subdirs
- Convert .txt documentation files to .md format
- Tests-related MD moved to tests/
- Root now only contains README.md, CLAUDE.md, GEMINI.md
2026-02-28 18:37:46 +00:00

4.3 KiB
Raw Blame History

Test: Smart Pakke - Timer Opgaver Fix 🔧

Problem Beskrivelse

Issue: Tilføjelse af opgaver fra database eller manuelt i Smart Pakke virker ikke - opgaver gemmes ikke til databasen.

Root Cause

  • Opgaver blev kun tilføjet til React state (selectedPackage.tasks eller standardTasks)
  • Ingen API call blev lavet for at gemme opgaver til databasen
  • Derfor forsvandt opgaver ved genindlæsning

Løsning Implementeret

1. Ny Funktion: saveTaskToDatabase()

Tilføjet i InlineSmartPackage.js:

const saveTaskToDatabase = async (packageId, taskData) => {
  const response = await fetch(`${apiBaseUrl}/api/smart-packages/${packageId}/tasks`, {
    method: 'POST',
    headers: { 'Content-Type': 'application/json' },
    body: JSON.stringify(taskData)
  });
  // ... error handling
}

2. Opdateret: addTaskFromSearch()

Nu gemmer opgaver til database efter tilføjelse til UI:

const addTaskFromSearch = async (task) => {
  // ... UI opdatering
  
  // GEM TIL DATABASE
  if (selectedPackage.id && !isPredefinedPackage) {
    await saveTaskToDatabase(selectedPackage.id, taskForDB);
  }
}

3. Opdateret: Manuel Opgave Tilføjelse

Button onClick er nu async og gemmer til database:

onClick={async () => {
  // ... UI opdatering
  
  // GEM TIL DATABASE
  if (selectedPackage.id && !isPredefinedPackage) {
    await saveTaskToDatabase(selectedPackage.id, taskForDB);
  }
}}

4. Backend Route Opdateret

smartPackagesRoutes.js accepterer nu også timeUnit og timePerUnit:

router.post('/:id/tasks', async (req, res) => {
  const { 
    name, description, hours, rate, 
    timeUnit, timePerUnit  // NYE FELTER
  } = req.body;
  // ...
});

Test Scenarie

A. Test Database Opgave Tilføjelse

  1. Start backend: npm run dev i /backend folder
  2. Start frontend: npm start i /frontend folder
  3. Login til systemet
  4. Opret eller vælg projekt
  5. Gå til Smart Pakke step
  6. Vælg en database pakke (IKKE de predefined som "B7 Tag Udskiftning")
  7. Klik "🔍 Søg i opgaver database"
  8. Søg efter en opgave (f.eks. "montering")
  9. Klik på en opgave fra søgeresultater
  10. Indtast timer og timeløn
  11. Verificer:
    • Opgave vises i UI
    • Console viser: 💾 Gemmer opgave til database:
    • Console viser: ✅ Opgave gemt til database:
    • Reload siden → Opgave skal stadig være der

B. Test Manuel Opgave Tilføjelse

  1. Følg step 1-6 fra A
  2. Klik " Tilføj opgave manuelt"
  3. Indtast:
    • Navn: "Test opgave"
    • Timer pr. m²: 0.5
    • Timeløn: 580
    • Beskrivelse: "Test"
  4. Verificer samme som A.11

C. Test Predefined Pakker (Skulle IKKE gemme)

  1. Vælg "B7 Tag Udskiftning - Komplet" (predefined)
  2. Tilføj opgave (søg eller manuelt)
  3. Verificer:
    • Opgave vises i UI
    • Console viser IKKE database gem (korrekt - predefined pakker gemmes ikke)

Database Verificering

SQL Check

-- Tjek at opgaven blev gemt
SELECT 
  spt.id,
  spt.package_id,
  spt.name,
  spt.description,
  spt.hours,
  spt.rate,
  spt.time_unit,
  spt.time_per_unit,
  spt.task_order,
  mp.name as package_name
FROM smart_package_tasks spt
JOIN material_packages mp ON spt.package_id = mp.id
WHERE spt.created_at > NOW() - INTERVAL 10 MINUTE
ORDER BY spt.created_at DESC;

Expected Behavior

Før Fix

  • Opgaver kunne tilføjes til UI
  • Opgaver gemmes til database
  • Opgaver persisteres ved reload

Efter Fix

  • Opgaver kunne tilføjes til UI
  • Opgaver gemmes til database
  • Opgaver persisteres ved reload
  • Error handling hvis database fejl
  • User feedback ved fejl

Filer Ændret

  1. /frontend/src/components/InlineSmartPackage.js

    • Tilføjet saveTaskToDatabase() funktion
    • Opdateret addTaskFromSearch() til async med database gem
    • Opdateret manuel opgave button til async med database gem
  2. /backend/src/routes/smartPackagesRoutes.js

    • Tilføjet timeUnit og timePerUnit til POST /:id/tasks endpoint

Status

  • Frontend fix implementeret
  • Backend route opdateret
  • Afventer test i udviklings-miljø

Næste Skridt

  1. Test i browser med developer tools åben
  2. Verificer database entries
  3. Test edge cases (ingen package selected, predefined packages)
  4. Mark som completed når verificeret ✓