diff --git a/e2e/aufgaben.spec.ts b/e2e/aufgaben.spec.ts index d818985..75c6324 100644 --- a/e2e/aufgaben.spec.ts +++ b/e2e/aufgaben.spec.ts @@ -107,6 +107,34 @@ test.describe('Aufgaben', () => { await expect(page.locator('li').filter({ hasText: titel })).toHaveCount(0) }) + test('hält Ideen aus der Aufgabenliste heraus', async ({ page }) => { + const idee = `${PRAEFIX} Nur eine Idee` + const aufgabe = `${PRAEFIX} Eine echte Aufgabe` + await db.aufgabe.createMany({ + data: [ + { titel: idee, typ: 'IDEE' }, + { titel: aufgabe, typ: 'AUFGABE' }, + ], + }) + + await anmelden(page) + + // In der Aufgabenliste hat die Idee nichts zu suchen. + await page.goto('/aufgaben') + await expect(page.locator('li').filter({ hasText: aufgabe })).toBeVisible() + await expect(page.locator('li').filter({ hasText: idee })).toHaveCount(0) + + // Auch nicht in der Inbox, obwohl beide keinen Bereich haben. + await page.goto('/inbox') + await expect(page.locator('li').filter({ hasText: aufgabe })).toBeVisible() + await expect(page.locator('li').filter({ hasText: idee })).toHaveCount(0) + + // Wer ausdrücklich danach filtert, sieht sie sehr wohl. + await page.goto('/aufgaben?typ=IDEE') + await expect(page.locator('li').filter({ hasText: idee })).toBeVisible() + await expect(page.locator('li').filter({ hasText: aufgabe })).toHaveCount(0) + }) + test('filtert nach Bereich und über die Adresszeile', async ({ page }) => { await anmelden(page) const bereich = await db.bereich.findFirst({ diff --git a/src/app/(app)/aufgaben/page.tsx b/src/app/(app)/aufgaben/page.tsx index c23f478..ee47777 100644 --- a/src/app/(app)/aufgaben/page.tsx +++ b/src/app/(app)/aufgaben/page.tsx @@ -56,6 +56,8 @@ function filterAus( : { nurOffen: true }), ...(typ && TYP_WERTE.includes(typ) ? { typ: typ as AufgabenTyp } : {}), ...(einer('suche') ? { suche: einer('suche') } : {}), + // Ideen haben ihre eigene Seite; wer sie hier sehen will, filtert danach. + ohneIdeen: true, } } diff --git a/src/app/(app)/inbox/page.tsx b/src/app/(app)/inbox/page.tsx index 1706b8c..f7954c7 100644 --- a/src/app/(app)/inbox/page.tsx +++ b/src/app/(app)/inbox/page.tsx @@ -22,7 +22,7 @@ export default async function InboxSeite() { await verlangeAnmeldung('/inbox') const [aufgaben, bereiche, projekte] = await Promise.all([ - aufgabenLaden({ nurInbox: true, nurOffen: true }), + aufgabenLaden({ nurInbox: true, nurOffen: true, ohneIdeen: true }), bereicheLaden(), projekteZurAuswahlLaden(), ]) diff --git a/src/app/(app)/page.tsx b/src/app/(app)/page.tsx index 87d3385..164dcd7 100644 --- a/src/app/(app)/page.tsx +++ b/src/app/(app)/page.tsx @@ -25,7 +25,7 @@ export default async function StartSeite() { const heute = jetzt() const [alleOffenen, bereiche, projekte, zahlen, bereichsListe] = await Promise.all([ - aufgabenLaden({ nurOffen: true }, 200), + aufgabenLaden({ nurOffen: true, ohneIdeen: true }, 200), bereicheLaden(), projekteZurAuswahlLaden(), zaehlstaende(), @@ -35,11 +35,9 @@ export default async function StartSeite() { }), ]) - // Was jetzt zählt: überfällig, heute oder morgen fällig. Ideen bleiben draußen. + // Was jetzt zählt: überfällig, heute oder morgen fällig. const dran = alleOffenen.filter( - (a) => - a.typ !== 'IDEE' && - (a.ueberfaellig || a.faelligkeit === 'heute' || a.faelligkeit === 'morgen'), + (a) => a.ueberfaellig || a.faelligkeit === 'heute' || a.faelligkeit === 'morgen', ) const anrede = benutzer.name?.split(' ')[0] ?? benutzer.email @@ -109,9 +107,7 @@ export default async function StartSeite() { ) : (