feat(frontend): implement step 1 - entity task detail and scheduler UX

This commit is contained in:
2026-03-26 20:32:06 -03:00
parent 381c6cbfcd
commit 888fb9f665
11 changed files with 470 additions and 45 deletions

View File

@@ -64,8 +64,8 @@ describe('DashboardPage', () => {
render(<DashboardPage />, { wrapper })
await waitFor(() => {
expect(screen.getByText(/Scheduled Tasks/i)).toBeInTheDocument()
expect(screen.getByText(/Entity A/i)).toBeInTheDocument()
expect(screen.getByRole('heading', { name: /Scheduled Tasks/i })).toBeInTheDocument()
expect(screen.getByText(/Entity A default task/i)).toBeInTheDocument()
expect(screen.getByText(/0 9 \* \* 1/i)).toBeInTheDocument()
})
})

View File

@@ -21,6 +21,8 @@ const wrapper = ({ children }: { children: React.ReactNode }) => (
describe('EntityDetailPage', () => {
it('should_renderEntityAndTasks_when_pageLoads', async () => {
vi.mocked(tasksApi.getEmailLookbackLabel).mockReturnValue('Last week')
vi.mocked(entitiesApi.getEntity).mockResolvedValue({
id: 'entity-1',
name: 'Entity A',
@@ -54,6 +56,8 @@ describe('EntityDetailPage', () => {
})
it('should_generatePreviewAndCreateTask_when_formSubmitted', async () => {
vi.mocked(tasksApi.getEmailLookbackLabel).mockReturnValue('Last week')
vi.mocked(entitiesApi.getEntity).mockResolvedValue({
id: 'entity-1',
name: 'Entity A',
@@ -89,7 +93,8 @@ describe('EntityDetailPage', () => {
fireEvent.click(screen.getByRole('button', { name: /generate test message/i }))
await waitFor(() => {
expect(tasksApi.generateTaskPreview).toHaveBeenCalledWith(
expect(tasksApi.generateTaskPreview).toHaveBeenCalled()
expect(vi.mocked(tasksApi.generateTaskPreview).mock.calls[0][0]).toEqual(
expect.objectContaining({
entityId: 'entity-1',
name: 'Morning Blast',
@@ -104,7 +109,8 @@ describe('EntityDetailPage', () => {
fireEvent.click(screen.getByRole('button', { name: /create task/i }))
await waitFor(() => {
expect(tasksApi.createTask).toHaveBeenCalledWith(
expect(tasksApi.createTask).toHaveBeenCalled()
expect(vi.mocked(tasksApi.createTask).mock.calls[0][0]).toEqual(
expect.objectContaining({
entityId: 'entity-1',
name: 'Morning Blast',