test
This commit is contained in:
@@ -1,3 +1,4 @@
|
||||
import { Logger } from '@nestjs/common';
|
||||
import { ConfigService } from '@nestjs/config';
|
||||
import { UserEntity } from '../auth/user.entity';
|
||||
import { MailService } from '../mail/mail.service';
|
||||
@@ -20,7 +21,14 @@ describe('TaskDigestService', () => {
|
||||
sendTaskDigestEmail: jest.fn().mockResolvedValue(undefined),
|
||||
};
|
||||
taskPushService = {
|
||||
sendTaskDigest: jest.fn().mockResolvedValue(undefined),
|
||||
sendTaskDigest: jest
|
||||
.fn()
|
||||
.mockResolvedValue({
|
||||
enabled: true,
|
||||
subscriptionCount: 1,
|
||||
sentCount: 1,
|
||||
failedCount: 0,
|
||||
}),
|
||||
};
|
||||
service = new TaskDigestService(
|
||||
usersRepository as never,
|
||||
@@ -154,6 +162,65 @@ describe('TaskDigestService', () => {
|
||||
expect(taskPushService.sendTaskDigest).not.toHaveBeenCalled();
|
||||
});
|
||||
|
||||
it('sends a test digest without marking the regular digest processed', async () => {
|
||||
await saveUser({ taskDigestPreference: 'none' });
|
||||
|
||||
const result = await service.sendTestDigest('owner-1');
|
||||
|
||||
expect(mailService.sendTaskDigestEmail).toHaveBeenCalledWith(
|
||||
'owner@example.com',
|
||||
expect.objectContaining({
|
||||
displayName: 'Owner',
|
||||
todayTasks: [
|
||||
{
|
||||
title: 'Test-Benachrichtigung',
|
||||
notes:
|
||||
'Diese Aufgabe wurde nur fuer den Benachrichtigungstest erzeugt.',
|
||||
dueDate: expect.any(String),
|
||||
},
|
||||
],
|
||||
overdueTasks: [],
|
||||
}),
|
||||
);
|
||||
expect(taskPushService.sendTaskDigest).toHaveBeenCalledWith(
|
||||
'owner-1',
|
||||
expect.objectContaining({
|
||||
todayTasks: [
|
||||
expect.objectContaining({ title: 'Test-Benachrichtigung' }),
|
||||
],
|
||||
}),
|
||||
);
|
||||
expect(result.mail.sent).toBe(true);
|
||||
expect(result.push).toEqual({
|
||||
enabled: true,
|
||||
subscriptionCount: 1,
|
||||
sentCount: 1,
|
||||
failedCount: 0,
|
||||
sent: true,
|
||||
});
|
||||
expect(result.usedFallbackTask).toBe(true);
|
||||
expect(
|
||||
(await usersRepository.findOne({ where: { id: 'owner-1' } }))
|
||||
?.taskDigestMorningProcessedDate,
|
||||
).toBeNull();
|
||||
});
|
||||
|
||||
it('returns separate mail and push status for test digest failures', async () => {
|
||||
jest.spyOn(Logger.prototype, 'error').mockImplementation(() => undefined);
|
||||
await saveUser();
|
||||
await saveTask({ id: 'today-task' });
|
||||
jest
|
||||
.mocked(mailService.sendTaskDigestEmail)
|
||||
.mockRejectedValueOnce(new Error('smtp down'));
|
||||
|
||||
const result = await service.sendTestDigest('owner-1');
|
||||
|
||||
expect(taskPushService.sendTaskDigest).toHaveBeenCalledTimes(1);
|
||||
expect(result.mail).toEqual({ sent: false, error: 'smtp down' });
|
||||
expect(result.push.sent).toBe(true);
|
||||
expect(result.usedFallbackTask).toBe(false);
|
||||
});
|
||||
|
||||
async function saveUser(overrides: Partial<UserEntity> = {}) {
|
||||
return usersRepository.save({
|
||||
id: overrides.id ?? 'owner-1',
|
||||
|
||||
Reference in New Issue
Block a user