kin: KIN-075 Расширить канбан-вид до ширины экрана, сейчас он ограничен центром. + добавить кнопки Тас Аудит Автокомит Авто в канбан вид

This commit is contained in:
Gros Frumos 2026-03-16 10:28:06 +02:00
parent 9764d1b414
commit 394301c7a7
4 changed files with 205 additions and 6 deletions

View file

@ -561,3 +561,88 @@ describe('KIN-UI-001: регрессии — другие вкладки не с
expect(wrapper.text()).toContain('No modules')
})
})
// ─────────────────────────────────────────────────────────────
// KIN-075: кнопки управления в канбан-виде
// ─────────────────────────────────────────────────────────────
describe('KIN-075: канбан — кнопки управления', () => {
it('Кнопка переключения режима (Авто/Review) присутствует в канбан-виде', async () => {
const wrapper = await mountOnKanban()
// MOCK_PROJECT.execution_mode = 'review' → autoMode=false → title = 'Review mode: agents read-only'
const modeBtn = wrapper.find('button[title*="mode:"]')
expect(modeBtn.exists()).toBe(true)
})
it('Кнопка Автокомит присутствует в канбан-виде', async () => {
const wrapper = await mountOnKanban()
// MOCK_PROJECT.autocommit_enabled = 0 → autocommit=false → title = 'Autocommit: off'
const btn = wrapper.find('button[title*="Autocommit:"]')
expect(btn.exists()).toBe(true)
expect(btn.text()).toMatch(/Автокомит/)
})
it('Кнопка Аудит присутствует в канбан-виде', async () => {
const wrapper = await mountOnKanban()
const btn = wrapper.find('button[title="Check which pending tasks are already done"]')
expect(btn.exists()).toBe(true)
expect(btn.text()).toContain('Аудит')
})
it('Кнопка "+ Тас" присутствует в канбан-виде', async () => {
const wrapper = await mountOnKanban()
const tasBtn = wrapper.findAll('button').find(b => b.text() === '+ Тас')
expect(tasBtn?.exists()).toBe(true)
})
it('Клик на кнопку режима вызывает api.patchProject с execution_mode', async () => {
vi.mocked(api.patchProject).mockResolvedValue(undefined as any)
const wrapper = await mountOnKanban()
const modeBtn = wrapper.find('button[title*="mode:"]')
await modeBtn.trigger('click')
await flushPromises()
expect(vi.mocked(api.patchProject)).toHaveBeenCalledWith(
'KIN',
expect.objectContaining({ execution_mode: expect.any(String) }),
)
})
it('Клик на кнопку Автокомит вызывает api.patchProject с autocommit_enabled', async () => {
vi.mocked(api.patchProject).mockResolvedValue(undefined as any)
const wrapper = await mountOnKanban()
const btn = wrapper.find('button[title*="Autocommit:"]')
await btn.trigger('click')
await flushPromises()
expect(vi.mocked(api.patchProject)).toHaveBeenCalledWith(
'KIN',
expect.objectContaining({ autocommit_enabled: expect.anything() }),
)
})
it('Клик на кнопку Аудит вызывает api.auditProject', async () => {
vi.mocked(api.auditProject).mockResolvedValue({
success: true, already_done: [], still_pending: [], unclear: [],
} as any)
const wrapper = await mountOnKanban()
const auditBtn = wrapper.find('button[title="Check which pending tasks are already done"]')
await auditBtn.trigger('click')
await flushPromises()
expect(vi.mocked(api.auditProject)).toHaveBeenCalledWith('KIN')
})
it('Клик на "+ Тас" открывает модальное окно Add Task', async () => {
const wrapper = await mountOnKanban()
const tasBtn = wrapper.findAll('button').find(b => b.text() === '+ Тас')!
await tasBtn.trigger('click')
await flushPromises()
expect(wrapper.text()).toContain('Add Task')
})
})