diff --git a/backend/src/graphql/resolver/TransactionResolver.ts b/backend/src/graphql/resolver/TransactionResolver.ts index 40c836b1b..871e1b9d6 100644 --- a/backend/src/graphql/resolver/TransactionResolver.ts +++ b/backend/src/graphql/resolver/TransactionResolver.ts @@ -6,7 +6,7 @@ import { Resolver, Query, Args, Authorized, Ctx, Mutation } from 'type-graphql' import { getCustomRepository, getConnection, QueryRunner } from 'typeorm' import CONFIG from '../../config' -import { sendEMail } from '../../mailer/sendEMail' +import { sendTransactionReceivedEmail } from '../../mailer/sendTransactionReceivedEmail' import { Transaction } from '../model/Transaction' import { TransactionList } from '../model/TransactionList' @@ -651,20 +651,14 @@ export class TransactionResolver { } // send notification email // TODO: translate - await sendEMail({ - to: `${recipiantUser.firstName} ${recipiantUser.lastName} <${recipiantUser.email}>`, - subject: 'Gradido Überweisung', - text: `Hallo ${recipiantUser.firstName} ${recipiantUser.lastName} - - Du hast soeben ${amount} GDD von ${senderUser.firstName} ${senderUser.lastName} erhalten. - ${senderUser.firstName} ${senderUser.lastName} schreibt: - - ${memo} - - Bitte antworte nicht auf diese E-Mail! - - Mit freundlichen Grüßen, - dein Gradido-Team`, + await sendTransactionReceivedEmail({ + senderFirstName: senderUser.firstName, + senderLastName: senderUser.lastName, + recipientFirstName: recipiantUser.firstName, + recipientLastName: recipiantUser.lastName, + email: recipiantUser.email, + amount, + memo, }) return 'success' diff --git a/backend/src/mailer/sendTransactionReceivedEmail.test.ts b/backend/src/mailer/sendTransactionReceivedEmail.test.ts new file mode 100644 index 000000000..7b4080622 --- /dev/null +++ b/backend/src/mailer/sendTransactionReceivedEmail.test.ts @@ -0,0 +1,35 @@ +import { sendTransactionReceivedEmail } from './sendTransactionReceivedEmail' +import { sendEMail } from './sendEMail' + +jest.mock('./sendEMail', () => { + return { + __esModule: true, + sendEMail: jest.fn(), + } +}) + +describe('sendTransactionReceivedEmail', () => { + beforeEach(async () => { + await sendTransactionReceivedEmail({ + senderFirstName: 'Bibi', + senderLastName: 'Bloxberg', + recipientFirstName: 'Peter', + recipientLastName: 'Lustig', + email: 'peter@lustig.de', + amount: 42.0, + memo: 'Vielen herzlichen Dank für den neuen Hexenbesen!', + }) + }) + + it('calls sendEMail', () => { + expect(sendEMail).toBeCalledWith({ + to: `Peter Lustig `, + subject: 'Gradido Überweisung', + text: + expect.stringContaining('Hallo Peter Lustig') && + expect.stringContaining('42,00') && + expect.stringContaining('Bibi Bloxberg') && + expect.stringContaining('Vielen herzlichen Dank für den neuen Hexenbesen!'), + }) + }) +}) diff --git a/backend/src/mailer/sendTransactionReceivedEmail.ts b/backend/src/mailer/sendTransactionReceivedEmail.ts new file mode 100644 index 000000000..51f8ef45c --- /dev/null +++ b/backend/src/mailer/sendTransactionReceivedEmail.ts @@ -0,0 +1,29 @@ +import { sendEMail } from './sendEMail' + +export const sendTransactionReceivedEmail = (data: { + senderFirstName: string + senderLastName: string + recipientFirstName: string + recipientLastName: string + email: string + amount: number + memo: string +}): Promise => { + return sendEMail({ + to: `${data.recipientFirstName} ${data.recipientLastName} <${data.email}>`, + subject: 'Gradido Überweisung', + text: `Hallo ${data.recipientFirstName} ${data.recipientLastName} + +Du hast soeben ${data.amount.toFixed(2).replace('.', ',')} GDD von ${data.senderFirstName} ${ + data.senderLastName + } erhalten. +${data.senderFirstName} ${data.senderLastName} schreibt: + +${data.memo} + +Bitte antworte nicht auf diese E-Mail! + +Mit freundlichen Grüßen, +dein Gradido-Team`, + }) +}