fix(andreknie.de): close package two review gaps

This commit is contained in:
2026-07-28 21:13:21 +02:00
parent 8236cce85c
commit 0334252fed
5 changed files with 91 additions and 7 deletions
@@ -62,11 +62,7 @@ export async function sendStakeholderNotification(type, data) {
'resource-download': `Ressourcenanfrage von ${data.name}`,
}
const body = [
'Bitte die angefragten Inhalte prüfen und bei positiver Prüfung ein aktuelles Profil von André verschicken.',
'',
...Object.entries(data).map(([key, val]) => `${key}: ${val}`),
].join('\n')
const body = buildStakeholderMessage(type, data)
await t.sendMail({
from: SMTP_USER,
@@ -76,6 +72,17 @@ export async function sendStakeholderNotification(type, data) {
})
}
export function buildStakeholderMessage(type, data) {
const fields = Object.entries(data).map(([key, val]) => `${key}: ${val}`)
if (type !== 'resource-download') return fields.join('\n')
return [
'Bitte die angefragten Inhalte prüfen und bei positiver Prüfung ein aktuelles Profil von André verschicken.',
'',
...fields,
].join('\n')
}
export { STAKEHOLDER_EMAIL, BASE_URL }
/**
@@ -1,5 +1,10 @@
import { describe, expect, it } from 'vitest'
import { isMailerReady, MailerNotReadyError, sendConfirmationEmail } from './mailer.js'
import {
buildStakeholderMessage,
isMailerReady,
MailerNotReadyError,
sendConfirmationEmail,
} from './mailer.js'
describe('mailer readiness', () => {
it('reports missing SMTP configuration without exposing credentials', async () => {
@@ -10,3 +15,24 @@ describe('mailer readiness', () => {
.rejects.toMatchObject({ code: 'MAILER_NOT_READY' })
})
})
describe('stakeholder notification content', () => {
const data = {
name: 'Synthetic Test',
email: 'test@example.invalid',
}
it('adds the manual profile instruction to resource requests', () => {
const message = buildStakeholderMessage('resource-download', data)
expect(message).toContain('ein aktuelles Profil von André verschicken')
expect(message).toContain('name: Synthetic Test')
})
it('does not add the resource instruction to contact notifications', () => {
const message = buildStakeholderMessage('contact', data)
expect(message).not.toContain('ein aktuelles Profil von André verschicken')
expect(message).toBe('name: Synthetic Test\nemail: test@example.invalid')
})
})