Files
tilbudgivern/test-smart-packages-api.js
T
alexpolo1 2d7218d67e feat: Implement TaskDialog component for managing tasks in smart packages
- Added TaskDialog component with functionality to create and edit tasks.
- Integrated form validation and error handling for task inputs.
- Implemented step management within tasks, including adding and deleting steps.
- Styled TaskDialog with CSS for improved user experience.

feat: Create SmartPackagesRoutes for navigation and routing

- Established routing for smart packages, including create and edit functionalities.
- Added loading state management for better user feedback during data fetching.
- Integrated SmartPackagesMenu for navigation within the smart packages section.

feat: Add utility functions for formatting data

- Implemented formatting utilities for currency, time, date, and percentages.
- Ensured consistent formatting across the application for better readability.

chore: Update database schema for smart packages

- Extended material_packages table with new fields for estimated hours, hourly rate, and difficulty level.
- Created smart_package_tasks and smart_package_steps tables for task management.
- Added foreign key relationships and indexes for improved database performance.

test: Add API tests for smart packages functionality

- Created test suite for validating smart packages API endpoints.
- Included tests for CRUD operations on smart packages and retrieval of categories and types.
2025-10-22 19:29:21 +00:00

115 lines
4.1 KiB
JavaScript

const axios = require('axios');
// Konfiguration
const API_BASE_URL = process.env.API_URL || 'http://127.0.0.1:4032/api';
/**
* Smart Pakker API Test
*
* Denne test kontrollerer at Smart Pakker API endepunkterne fungerer korrekt
*/
async function testSmartPackagesAPI() {
console.log('🧪 SMART PAKKER API TEST');
console.log('=========================');
try {
// Test GET /api/smart-packages
console.log('\n📋 Test: Henter alle smart pakker');
const allPackages = await axios.get(`${API_BASE_URL}/smart-packages`);
console.log(`✅ Status: ${allPackages.status}`);
console.log(`✅ Pakker fundet: ${allPackages.data.packages?.length || 0}`);
// Opret test pakke
console.log('\n📦 Test: Opretter ny smart pakke');
const newPackageData = {
name: 'Test Smart Pakke',
description: 'Dette er en test pakke',
category: 'tag',
package_type: 'standard',
difficulty_level: 2,
estimated_hours: 10,
hourly_rate: 580,
installation_notes: 'Test installation noter',
is_template: false,
materials: [],
tasks: [
{
name: 'Test opgave 1',
description: 'Testbeskrivelse af opgave 1',
hours: 2.5,
rate: 580,
task_order: 1
}
],
created_by: 'test-script'
};
let createdPackage;
try {
createdPackage = await axios.post(`${API_BASE_URL}/smart-packages`, newPackageData);
console.log(`✅ Status: ${createdPackage.status}`);
console.log(`✅ Oprettet pakke ID: ${createdPackage.data.packageId}`);
// Hent detaljer om den oprettede pakke
console.log(`\n🔍 Test: Henter detaljer for pakke ID ${createdPackage.data.packageId}`);
const packageDetails = await axios.get(`${API_BASE_URL}/smart-packages/${createdPackage.data.packageId}`);
console.log(`✅ Status: ${packageDetails.status}`);
console.log(`✅ Pakke navn: ${packageDetails.data.package.name}`);
console.log(`✅ Antal opgaver: ${packageDetails.data.tasks?.length || 0}`);
// Opdater pakken
console.log(`\n✏️ Test: Opdaterer pakke ID ${createdPackage.data.packageId}`);
const updateResponse = await axios.put(
`${API_BASE_URL}/smart-packages/${createdPackage.data.packageId}`,
{
...newPackageData,
name: 'Test Smart Pakke (Opdateret)',
estimated_hours: 12
}
);
console.log(`✅ Status: ${updateResponse.status}`);
// Slet test pakken
console.log(`\n🗑️ Test: Sletter pakke ID ${createdPackage.data.packageId}`);
const deleteResponse = await axios.delete(`${API_BASE_URL}/smart-packages/${createdPackage.data.packageId}`);
console.log(`✅ Status: ${deleteResponse.status}`);
} catch (error) {
console.error('❌ Fejl i test af CRUD operationer:', error.message);
if (error.response) {
console.error('Fejlrespons data:', error.response.data);
}
}
// Test kategorier og pakketyper
console.log('\n📊 Test: Henter Smart Pakke kategorier');
try {
const categories = await axios.get(`${API_BASE_URL}/smart-packages/categories`);
console.log(`✅ Status: ${categories.status}`);
console.log(`✅ Antal kategorier: ${categories.data.categories?.length || 0}`);
} catch (error) {
console.error('❌ Fejl ved hentning af kategorier:', error.message);
}
console.log('\n📊 Test: Henter Smart Pakke typer');
try {
const types = await axios.get(`${API_BASE_URL}/smart-packages/types`);
console.log(`✅ Status: ${types.status}`);
console.log(`✅ Antal typer: ${types.data.types?.length || 0}`);
} catch (error) {
console.error('❌ Fejl ved hentning af pakketyper:', error.message);
}
console.log('\n✅ SMART PAKKER API TEST AFSLUTTET');
} catch (error) {
console.error('❌ Generel fejl i Smart Pakker API test:', error.message);
if (error.response) {
console.error('Status:', error.response.status);
console.error('Data:', error.response.data);
}
}
}
// Kør testen
testSmartPackagesAPI();