feat(notifications): add channel routing matrix, daily summary, and task watch button
This commit is contained in:
1 parent
6795edbf4b
commit
d2afcf49df
7 files changed
+461
-32
No files matched your search
@@ -1,6 +1,7 @@
|
||||
import { describe, it, expect, vi } from 'vitest';
|
||||
import { render, screen, fireEvent } from '@testing-library/react';
|
||||
import { render, screen, fireEvent, waitFor } from '@testing-library/react';
|
||||
import { TaskDetailModal } from '../TaskDetailModal';
|
||||
import { api } from '../../../lib/api';
|
||||
import { Thought } from '../../../lib/types';
|
||||
|
||||
const task: Thought = {
|
||||
@@ -67,4 +68,20 @@ describe('TaskDetailModal', () => {
|
||||
expect(screen.getByText('Aufgabe ansehen')).toBeTruthy();
|
||||
expect((screen.getByLabelText('Fälligkeitsdatum') as HTMLInputElement).closest('fieldset')?.disabled).toBe(true);
|
||||
});
|
||||
|
||||
it('toggles watching a task via POST and DELETE /tasks/{id}/watch', async () => {
|
||||
const watchSpy = vi.spyOn(api, 'watchTask').mockResolvedValue({ watching: true });
|
||||
const unwatchSpy = vi.spyOn(api, 'unwatchTask').mockResolvedValue({ watching: false });
|
||||
|
||||
render(<TaskDetailModal {...props({ task: { ...task, isWatching: false } })} />);
|
||||
const btn = screen.getByRole('button', { name: 'Beobachten' });
|
||||
fireEvent.click(btn);
|
||||
|
||||
await waitFor(() => expect(watchSpy).toHaveBeenCalledWith('th_1'));
|
||||
expect(screen.getByRole('button', { name: 'Nicht mehr beobachten' })).toBeTruthy();
|
||||
|
||||
fireEvent.click(screen.getByRole('button', { name: 'Nicht mehr beobachten' }));
|
||||
await waitFor(() => expect(unwatchSpy).toHaveBeenCalledWith('th_1'));
|
||||
expect(screen.getByRole('button', { name: 'Beobachten' })).toBeTruthy();
|
||||
});
|
||||
});
|
||||
Reference in new issue
Block a user