fix(frontend): keep entity and message deletes in sync

This commit is contained in:
2026-03-27 03:38:41 -03:00
parent 726c8f3afd
commit 433874d11e
7 changed files with 112 additions and 4 deletions

View File

@@ -294,6 +294,45 @@ describe('EditTaskPage', () => {
})
})
it('should_removeOnlyDeletedGeneratedMessage_when_deleteSucceedsWithoutRefetch', async () => {
persistedHistory = [
{
id: 'message-2',
taskId: 'task-1',
label: 'Message #2',
content: 'SUBJECT: Second\nBODY:\nSecond output',
createdAt: '2026-03-27T12:10:00Z',
},
{
id: 'message-1',
taskId: 'task-1',
label: 'Message #1',
content: 'SUBJECT: First\nBODY:\nFirst output',
createdAt: '2026-03-27T12:00:00Z',
},
]
vi.mocked(tasksApi.getTaskGeneratedMessages).mockResolvedValue(persistedHistory)
vi.mocked(tasksApi.deleteTaskGeneratedMessage).mockResolvedValue(undefined)
renderPage()
const secondMessageHistoryItem = await screen.findByRole('button', { name: /^message #2$/i })
expect(await screen.findByRole('button', { name: /^message #1$/i })).toBeInTheDocument()
fireEvent.click(
screen.getByRole('button', {
name: /delete message #1/i,
})
)
await waitFor(() => {
expect(tasksApi.deleteTaskGeneratedMessage).toHaveBeenCalledWith('task-1', 'message-1')
expect(screen.queryByRole('button', { name: /^message #1$/i })).not.toBeInTheDocument()
expect(secondMessageHistoryItem).toBeInTheDocument()
expect(screen.getByText(/Second output/i)).toBeInTheDocument()
})
})
it('should_loadPersistedGeneratedMessageHistory_when_pageLoads', async () => {
persistedHistory = [
{