|
| 1 | +import type { App } from 'obsidian'; |
| 2 | +import type { Task } from '../../src/Task/Task'; |
| 3 | +import { editTaskLineModal } from '../../src/Api/editTaskLineModal'; |
| 4 | +import { taskFromLine } from '../../src/Commands/CreateOrEditTaskParser'; |
| 5 | +import { TaskModal } from '../__mocks__/TaskModal'; |
| 6 | +import type { TaskModalParams } from '../../src/Obsidian/TaskModal'; |
| 7 | + |
| 8 | +const app = {} as App; |
| 9 | + |
| 10 | +const createNewTask = (line = ''): Task => { |
| 11 | + return taskFromLine({ line, path: '' }); |
| 12 | +}; |
| 13 | + |
| 14 | +jest.mock('../../src/Obsidian/TaskModal', () => { |
| 15 | + return { |
| 16 | + TaskModal: jest.fn(({ app, task, onSubmit, allTasks }: TaskModalParams) => { |
| 17 | + return new TaskModal({ app, task, onSubmit, allTasks }); |
| 18 | + }), |
| 19 | + }; |
| 20 | +}); |
| 21 | + |
| 22 | +describe('APIv1 - editTaskLineModal', () => { |
| 23 | + beforeEach(() => { |
| 24 | + jest.clearAllMocks(); |
| 25 | + }); |
| 26 | + |
| 27 | + it('TaskModal.open() should be called', () => { |
| 28 | + const taskLine = '- [ ] '; |
| 29 | + editTaskLineModal(app, taskLine, []); |
| 30 | + |
| 31 | + expect(TaskModal.instance.open).toHaveBeenCalled(); |
| 32 | + }); |
| 33 | + |
| 34 | + it('should return the edited Markdown', async () => { |
| 35 | + const taskLine = '- [ ] Updated Task'; |
| 36 | + const taskLinePromise = editTaskLineModal(app, '- [ ] Task Name', []); |
| 37 | + |
| 38 | + TaskModal.instance.onSubmit([createNewTask(taskLine)]); |
| 39 | + |
| 40 | + const result = await taskLinePromise; |
| 41 | + expect(result).toEqual('- [ ] Updated Task'); |
| 42 | + }); |
| 43 | + |
| 44 | + it('should return empty string on cancel', async () => { |
| 45 | + const taskLine = '- [ ] '; |
| 46 | + const taskLinePromise = editTaskLineModal(app, taskLine, []); |
| 47 | + |
| 48 | + TaskModal.instance.cancel(); |
| 49 | + |
| 50 | + const result = await taskLinePromise; |
| 51 | + expect(result).toEqual(''); |
| 52 | + }); |
| 53 | + |
| 54 | + it('should pass allTasks to TaskModal', () => { |
| 55 | + const taskLine = '- [ ] Task Name'; |
| 56 | + const allTasks = [createNewTask('- [ ] Task 1')]; |
| 57 | + |
| 58 | + editTaskLineModal(app, taskLine, allTasks); |
| 59 | + |
| 60 | + expect(TaskModal.instance.allTasks).toEqual(allTasks); |
| 61 | + }); |
| 62 | +}); |
0 commit comments