Download desktop/src/components/tasks/NewTaskModal.test.tsx from chenbhao/codev: direct link, hf CLI and curl.
- Browser
- Download file 3.15 kB
-
https://huggingface.co/chenbhao/codev/resolve/e40073cc959cd4729bf4009662bca374c5c4e266/desktop/src/components/tasks/NewTaskModal.test.tsx
- Command line
-
hf download hf://chenbhao/codev@e40073cc959cd4729bf4009662bca374c5c4e266/desktop/src/components/tasks/NewTaskModal.test.tsx
-
curl -L -o NewTaskModal.test.tsx https://huggingface.co/chenbhao/codev/resolve/e40073cc959cd4729bf4009662bca374c5c4e266/desktop/src/components/tasks/NewTaskModal.test.tsx
3.15 kB
| import { afterEach, describe, expect, it, vi } from 'vitest' | |
| import { act, cleanup, fireEvent, render, screen, waitFor } from '@testing-library/react' | |
| import '@testing-library/jest-dom' | |
| import { NewTaskModal } from './NewTaskModal' | |
| import { useAdapterStore } from '../../stores/adapterStore' | |
| import { useProviderStore } from '../../stores/providerStore' | |
| import { useSettingsStore } from '../../stores/settingsStore' | |
| import { useTaskStore } from '../../stores/taskStore' | |
| afterEach(() => { | |
| cleanup() | |
| useAdapterStore.setState(useAdapterStore.getInitialState(), true) | |
| useProviderStore.setState(useProviderStore.getInitialState(), true) | |
| useSettingsStore.setState(useSettingsStore.getInitialState(), true) | |
| useTaskStore.setState(useTaskStore.getInitialState(), true) | |
| }) | |
| describe('NewTaskModal', () => { | |
| it('creates scheduled tasks with a provider-scoped model selection', async () => { | |
| const createTask = vi.fn(async () => {}) | |
| useTaskStore.setState({ createTask } as Partial<ReturnType<typeof useTaskStore.getState>>) | |
| useAdapterStore.setState({ | |
| fetchConfig: vi.fn(async () => {}), | |
| config: {}, | |
| } as Partial<ReturnType<typeof useAdapterStore.getState>>) | |
| useSettingsStore.setState({ | |
| locale: 'en', | |
| currentModel: { | |
| id: 'provider-main', | |
| name: 'provider-main', | |
| description: '', | |
| context: '', | |
| }, | |
| availableModels: [ | |
| { id: 'claude-sonnet-4-6', name: 'Sonnet', description: '', context: '' }, | |
| ], | |
| activeProviderName: 'Provider A', | |
| }) | |
| useProviderStore.setState({ | |
| providers: [{ | |
| id: 'provider-a', | |
| presetId: 'custom', | |
| name: 'Provider A', | |
| apiKey: '***', | |
| baseUrl: 'https://api.example.com', | |
| apiFormat: 'anthropic', | |
| models: { | |
| main: 'provider-main', | |
| haiku: 'provider-fast', | |
| sonnet: 'provider-main', | |
| opus: '', | |
| }, | |
| }], | |
| activeId: 'provider-a', | |
| hasLoadedProviders: true, | |
| isLoading: true, | |
| }) | |
| render(<NewTaskModal open onClose={vi.fn()} />) | |
| fireEvent.change(screen.getByLabelText(/^Name/), { | |
| target: { value: 'provider cron' }, | |
| }) | |
| fireEvent.change(screen.getByLabelText(/^Description/), { | |
| target: { value: 'exercise provider selection' }, | |
| }) | |
| fireEvent.change(screen.getByPlaceholderText(/Look at the commits/i), { | |
| target: { value: 'Say hello from the scheduled task.' }, | |
| }) | |
| await act(async () => { | |
| fireEvent.click(screen.getByRole('button', { name: /provider-main/i })) | |
| await Promise.resolve() | |
| }) | |
| await act(async () => { | |
| fireEvent.click(screen.getByRole('button', { name: /provider-fast/i })) | |
| await Promise.resolve() | |
| }) | |
| await act(async () => { | |
| fireEvent.click(screen.getByRole('button', { name: 'Create task' })) | |
| await Promise.resolve() | |
| }) | |
| await waitFor(() => expect(createTask).toHaveBeenCalledTimes(1)) | |
| expect(createTask).toHaveBeenCalledWith(expect.objectContaining({ | |
| model: 'provider-fast', | |
| providerId: 'provider-a', | |
| enabled: true, | |
| recurring: true, | |
| })) | |
| }) | |
| }) | |