takt/src/__tests__/listNonInteractive-completedActions.test.ts
nrs 4a92ba2012
[#366] implement-exceeded-requeue (#374)
* takt: implement-exceeded-requeue

* takt: implement-exceeded-requeue

* takt: implement-exceeded-requeue

* ci: trigger CI

* fix: 未使用インポート削除と --create-worktree e2e テスト修正

InteractiveModeAction の不要な import を削除して lint エラーを解消する。
--create-worktree オプション削除に合わせ e2e の期待メッセージを更新する。

---------

Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2026-03-02 23:30:53 +09:00

84 lines
2.2 KiB
TypeScript

import { beforeEach, describe, expect, it, vi } from 'vitest';
const {
mockDeleteTask,
mockListAllTaskItems,
mockMergeBranch,
mockDeleteBranch,
mockInfo,
} = vi.hoisted(() => ({
mockDeleteTask: vi.fn(),
mockListAllTaskItems: vi.fn(),
mockMergeBranch: vi.fn(),
mockDeleteBranch: vi.fn(),
mockInfo: vi.fn(),
}));
vi.mock('../infra/task/index.js', () => ({
detectDefaultBranch: vi.fn(() => 'main'),
TaskRunner: class {
listAllTaskItems() {
return mockListAllTaskItems();
}
deleteTask(name: string, kind: string) {
mockDeleteTask(name, kind);
}
},
}));
vi.mock('../shared/ui/index.js', () => ({
info: (...args: unknown[]) => mockInfo(...args),
}));
vi.mock('../features/tasks/list/taskActions.js', () => ({
tryMergeBranch: vi.fn(),
mergeBranch: (...args: unknown[]) => mockMergeBranch(...args),
deleteBranch: (...args: unknown[]) => mockDeleteBranch(...args),
}));
import { listTasksNonInteractive } from '../features/tasks/list/listNonInteractive.js';
describe('listTasksNonInteractive completed actions', () => {
beforeEach(() => {
vi.clearAllMocks();
mockListAllTaskItems.mockReturnValue([
{
kind: 'completed',
name: 'completed-task',
createdAt: '2026-02-14T00:00:00.000Z',
filePath: '/project/.takt/tasks.yaml',
content: 'done',
branch: 'takt/completed-task',
},
]);
});
it('should delete completed record after merge action', async () => {
mockMergeBranch.mockReturnValue(true);
await listTasksNonInteractive('/project', {
enabled: true,
action: 'merge',
branch: 'takt/completed-task',
yes: true,
});
expect(mockMergeBranch).toHaveBeenCalled();
expect(mockDeleteTask).toHaveBeenCalledWith('completed-task', 'completed');
});
it('should delete completed record after delete action', async () => {
mockDeleteBranch.mockReturnValue(true);
await listTasksNonInteractive('/project', {
enabled: true,
action: 'delete',
branch: 'takt/completed-task',
yes: true,
});
expect(mockDeleteBranch).toHaveBeenCalled();
expect(mockDeleteTask).toHaveBeenCalledWith('completed-task', 'completed');
});
});