From 71637a8483f79e3e4718b1b85fc227e8aab1119a Mon Sep 17 00:00:00 2001 From: Maurice Date: Fri, 17 Apr 2026 23:56:42 +0200 Subject: [PATCH] fix(tests): restore packing panel inline header + update tests for ui changes - PackingListPanel accepts inlineHeader prop (default true) to keep its legacy title and inline import button; ListsContainer passes inlineHeader={false} since the toolbar now owns those controls - ReservationModal tests look for the renamed 'Car' button (was 'Rental Car') - Budget total-budget test asserts against the split integer/decimal spans that replaced the single text node --- .../components/Budget/BudgetPanel.test.tsx | 4 +- .../components/Packing/PackingListPanel.tsx | 37 +++++++++++++++---- .../Planner/ReservationModal.test.tsx | 4 +- client/src/pages/TripPlannerPage.tsx | 2 +- 4 files changed, 34 insertions(+), 13 deletions(-) diff --git a/client/src/components/Budget/BudgetPanel.test.tsx b/client/src/components/Budget/BudgetPanel.test.tsx index c912d651..244cbc96 100644 --- a/client/src/components/Budget/BudgetPanel.test.tsx +++ b/client/src/components/Budget/BudgetPanel.test.tsx @@ -416,8 +416,8 @@ describe('BudgetPanel', () => { render(); await screen.findByText('Flight'); await screen.findByText('Hotel'); - // Grand total card shows 300.00 - expect(screen.getByText('300.00')).toBeInTheDocument(); + // Grand total card shows 300.00 (integer and decimal are rendered in separate spans) + expect(document.body.textContent?.replace(/\s+/g, '')).toMatch(/300[,.]00/); }); it('FE-COMP-BUDGET-033: read-only mode hides add/delete/edit controls', async () => { diff --git a/client/src/components/Packing/PackingListPanel.tsx b/client/src/components/Packing/PackingListPanel.tsx index 10803f68..887d36c2 100644 --- a/client/src/components/Packing/PackingListPanel.tsx +++ b/client/src/components/Packing/PackingListPanel.tsx @@ -730,9 +730,10 @@ interface PackingListPanelProps { tripId: number items: PackingItem[] openImportSignal?: number + inlineHeader?: boolean } -export default function PackingListPanel({ tripId, items, openImportSignal = 0 }: PackingListPanelProps) { +export default function PackingListPanel({ tripId, items, openImportSignal = 0, inlineHeader = true }: PackingListPanelProps) { const [filter, setFilter] = useState('alle') // 'alle' | 'offen' | 'erledigt' const [addingCategory, setAddingCategory] = useState(false) const [newCatName, setNewCatName] = useState('') @@ -1008,14 +1009,34 @@ export default function PackingListPanel({ tripId, items, openImportSignal = 0 }
{/* ── Header ── */} -
-
- {items.length > 0 ? ( -

- {t('packing.progress', { packed: abgehakt, total: items.length, percent: fortschritt })} -

- ) : } +
+
+ {inlineHeader ? ( +
+

{t('packing.title')}

+ {items.length > 0 && ( +

+ {t('packing.progress', { packed: abgehakt, total: items.length, percent: fortschritt })} +

+ )} +
+ ) : ( + items.length > 0 ? ( +

+ {t('packing.progress', { packed: abgehakt, total: items.length, percent: fortschritt })} +

+ ) : + )}
+ {inlineHeader && canEdit && ( + + )} {canEdit && abgehakt > 0 && (
- {subTab === 'packing' && } + {subTab === 'packing' && } {subTab === 'todo' && }